SORU
25 EYLÜL 2008, PERŞEMBE


Üreten benim inşa parçası olarak bir Xml Seri hale getirme derlemesi

Bu kodu bir FileNotFoundException üretir, ama sonuçta sorun olmadan çalışır:

void ReadXml()
{
    XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
    //...
}

Burada bu özel durum:

< / ^ hr .

İlk şansını özel durum türü 'System.IO.FileNotFoundException' mscorlib.dll oluştu

Ek bilgi: dosya veya derleme 'MyAssembly yüklenemedi.XmlSerializers, Version=1.4.3190.15950,=, Kültür tarafsız=PublicKeyToken null' ya da bağımlılıklarından biri. Sistem belirtilen dosyayı bulamıyor.

< / ^ hr .

Eğer çerçeve buldu değil mi eğer otomatik olarak seri hale getirme derlemesi oluşturur gibi görünüyor.Elle hariç hafifletir hangi sgen.exe kullanarak üretebilirsiniz.

Nasıl XML Seri hale getirme derlemesi otomatik olarak oluşturmak için visual studio alabilirim?

< / ^ hr .

Güncelleme: bir şey yapmak için görünmüyor ayarı. Üret Seri hale getirme Derlemesi:

CEVAP
15 EKİM 2008, ÇARŞAMBA


Bu benim içinde MSBUİLD komut dosyasını değiştirerek bunu başardı .CSPROJ dosya:

İlk olarak, açık .Bir proje olarak değil, bir dosya olarak dosya CSPROJ. Bu kod, sadece Proje etiketi kapatmadan önce yorumladı öğrenmek kadar dosyanın en altına gidin:

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->

Şimdi sadece kendi AfterBuild Ekle varolan XmlSerializer silmek ve bizim gibi çok SGen için hedef:

<Target Name="AfterBuild" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)">
   <!-- Delete the file because I can't figure out how to force the SGen task. -->
   <Delete
     Files="$(TargetDir)$(TargetName).XmlSerializers.dll"
     ContinueOnError="true" />
   <SGen
     BuildAssemblyName="$(TargetFileName)"
     BuildAssemblyPath="$(OutputPath)"
     References="@(ReferencePath)"
     ShouldGenerateSerializer="true"
     UseProxyTypes="false"
     KeyContainer="$(KeyContainerName)"
     KeyFile="$(KeyOriginatorFile)"
     DelaySign="$(DelaySign)"
     ToolPath="$(TargetFrameworkSDKToolsDirectory)"
     Platform="$(Platform)">
      <Output
       TaskParameter="SerializationAssembly"
       ItemName="SerializationAssembly" />
   </SGen>
</Target>

O benim için çalışıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • olinerd

    olinerd

    23 AĞUSTOS 2007
  • PCDIY

    PCDIY

    16 AĞUSTOS 2013