SORU
2 HAZİRAN 2010, ÇARŞAMBA


kullanarak İLMerge .NET 4 kitaplıkları

İki sorun var

1) Temel .NET Montaj Değil İLMerged Montaj Dahil

Benim post-build yükseltme sonra sorun İLMerge kullanarak geçiriyorum .NET 3.5 Visual Studio 2008 .4/NET Visual Studio 2010. Ayarlanmış olan çeşitli projeler ile bir Çözüm buldum ".". NET Çerçeve 4 Tek bir DLL içinde tek bir proje DLL birleştirme İLMerge için aşağıdaki komutu kullanın:

if not $(ConfigurationName) == Debug
  if exist "C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe"
    "C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe"
      /lib:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
      /lib:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies"
      /keyfile:"$(SolutionDir)$(SolutionName).snk"
      /targetplatform:v4
      /out:"$(SolutionDir)bin\development\$(SolutionName).dll"
      "$(SolutionDir)Connection\$(OutDir)Connection.dll"
      ...other project DLLs...
      /xmldocs 

Kapalı konumunu belirtme gidersem .NET 4 çerçeve dizin, ben bir Sistem" İLMerge hata. "Çözülmemiş bir derleme başvurusu İzin Verilmiyor: Eğer kapalı MSTest dizin konumunu belirtmek gidersem, bir "derleme başvurusu Verilmiyor Çözümlenmemiş: Microsoft geliyor.Studio.QualityTools.UnitTestFramework" hata.

İLMerge yukarıdaki komut çalışır ve bir DLL dosyası oluşturur. Ben başvuru yaparken başka bir DLL .Proje, ancak, ve içindeki kod kullanmayı deneyin, aşağıdaki uyarı alıyorum NET 4 C#:

Temel referans "MyİLMergedDLL" dolaylı bir bağımlılık vardır çünkü çözümlenemedi ."Mscorlib,=4.0,=, Kültür tarafsız=b77a5c561934e089" daha yeni bir sürüm var "" sürümünden "4.0.0.0" şimdiki hedef çerçevesinde. 4.0.65535.65535 Sürüm PublicKeyToken NET Çerçeve montaj

Ben o /targetplatform:v4 bayrağı kaldırmak ve kullanmak için çalışırsanız MyILMergedDLL.dll aşağıdaki hatayı alıyorum:

Türü 'System.Xml.Seri hale getirme.'Yapılmayan bir derlemede tanımlanmış. ıxmlserializable Derleme için başvuru eklemeniz gerekir 'System.Xml, Version=4.0.0.0,=Kültür neutral, PublicKeyToken=b77a5c561934e089'.

Bunu yapmasam daha iyi gibi görünmüyor. Myilmergeddll.dll benim API kullanan her kim olursa olsun başvurular için başvuru ekleyin. Nasıl bu çevrede alabilirim?

2) Birleştirilmiş Montaj Kullanarak Sadece Durumuna

Düzenleme:bunun ötesinde, eğer myilmergeddll.dll bazı kod myilmergeddll.dll yapma kullanın kullanan tüketici proje System.Xml başvuru bu durum verir ekledim bile:

Sistem.Durumuna: 'System.türü yüklenemedi İşlev`2' derleme ',=1.0.1.1,=Kültür neutral, PublicKeyToken MyİLMergedDLL Version=...'.

Bu tüketim benim proje kodu; TypeLoadException neden olan bir satırı ikincisi:

var keys = new[] {"a", "b", "c"};
var row = new Row(keys);

TypeLoadException atar Row belirli yapıcı tek bir proje DLL başvururken bu yapıcı kullandığımda MyILMergedDLL ve ortak bir sınıf içinde tanımlanan, gayet iyi çalışıyor. İstisna olsun IL-birleştirilmiş DLL başvururken bu oluşturucu kullanın. Neler oluyor bilmiyorum.

İşte o kurucu:

public Row(IEnumerable<string> keys) : base(keys) { }

Ve bir ifade base bu kodu vardır:

foreach (string key in keys.Where(
    key => !string.IsNullOrEmpty(key)
))
{
    _dic.Add(key, string.Empty);
}

CEVAP
2 HAZİRAN 2010, ÇARŞAMBA


64 sorunları çözmek için very recent release vardı. Eğer hala sorunlarınız (mbarnett . eğer Mike Barnett ile doğrudan iletişime geçin ^em>atmicrosoftnoktacom)


Ek. /lib:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319" seçenek hakkında çok kötü bir şey var. Bu sorun programcılar bir sürü son zamanlarda, sonra elde edilmiştir .NET 4.5 serbest bırakıldı. Bu dizin vardırdeğiliçin uygun bir .NET 4.0 referans derlemeler. İçeriği 4.5 derlemeleri üzerine alır, artık bir hedef için kullanabilirsiniz .NET 4.0 yükleyin. Olsun çalışma zamanı hata çok garip, programı bazı türleri artık. [Uzatma] özniteliği, ICommand arayüzü bazen genellikle bombalama.

Bu tür, ve bazı Diğerleri, başka bir derleme taşındı. Doğru başvuru derlemeleri kullanarak kaya gibi sert bir gerekliliktir. Sanagerekirkullanımı:

 /lib:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"

Özellikle makine maç ve çerçeve sürümü için hedef ayarlamak.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Call Me Howard

    Call Me Howa

    18 AĞUSTOS 2012
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • ThePhestor

    ThePhestor

    22 Mart 2011