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

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • EEVblog

    EEVblog

    4 NİSAN 2009
  • Felice Musique

    Felice Musiq

    22 NİSAN 2014