2015-10-01 17 views
6

değiştirildi Bu 2013Fody hataları nedeniyle proje derlenemiyor. Fody (veya başka bir kodu) ile hiçbir **

alıyorum hata masif ve çoğunlukla yararsız Visual Studio içinde bir konudur, ama bunun püf noktası

olduğunu
Error 130 Fody: Could not load 'ModuleWeaver' from 'PropertyChanged.Fody, Version=1.50.3.0, Culture=neutral, PublicKeyToken=null' due to ReflectionTypeLoadException. 
It is possible you need to update the package. 
exception.LoaderExceptions: 
System.IO.FileLoadException: Could not load file or assembly 'Mono.Cecil,  Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its  dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
File name: 'Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' 

Yine hiçbir değişiklik olmadığından, sorunun genel olarak ne olduğu hakkında hiçbir fikrim yok. Bu aradığı DLL her zaman oturuyordu aynı yerde oturuyor.

Ayrıca hata iddia Fody" içeride gerçekleşiyor:

Düzenleme: o Edit 2 yenisini

Error 42 The "Fody.WeavingTask" task failed unexpectedly. 
System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, Version=0.9.5.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. The system cannot find the file specified. 
File name: 'Mono.Cecil, Version=0.9.5.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' 
    at ExceptionExtensions.LogException(ILogger logger, Exception exception) 
    at Processor.Execute() in c:\TeamCity\buildAgent\work\7495521761d392b9\Fody\Processor.cs:line 56 
    at Fody.WeavingTask.Execute() in c:\TeamCity\buildAgent\work\7495521761d392b9\Fody\WeavingTask.cs:line 44 
    at  Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 
    at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext() 

fabrikasyon yüzden görünüşte bu noktada o hatayı tükürme yoruldu.

I:

<Fody.WeavingTask 
     AssemblyPath="@(IntermediateAssembly)" 
     IntermediateDir="$(IntermediateDir)" 
     KeyFilePath="$(FodyKeyFilePath)" 
     ProjectDirectory="$(ProjectDir)" 
     SolutionDir="$(FodySolutionDir)" 
     References="@(ReferencePath)" 
     SignAssembly="$(FodySignAssembly)" 
     ReferenceCopyLocalPaths="@(ReferenceCopyLocalPaths)" 
     DefineConstants="$(DefineConstants)" 
    /> 

Düzenleme 3'tür hat 50 üzerinde hedefler" Fody ve Nuget ile ilişkili tüm dosyaları silme işlemi sırasında onları redownloaded. Bundan sonra hata 2 hata olarak aynıdır:

"Error 42 The "Fody.WeavingTask" task failed unexpectedly." 

Düzenleme 4:

ben gerçekten bu giderilene kadar biz mutlak dururken çünkü Fody ait dev bunu görür umarım. Çalışırken ne zaman çalışıyor olacağından, çalıştığı zamana geri dönemeziz.

+0

Eğer Mono.Cecil.dll sürümünü kontrol sağ explorer tıklatın ve özellikleri yoluyla gidebiliriz, olacak sürüm numarasını bulun. Yönlendirmeye ihtiyacınız olmayabilirse, 0.9.6.0 olduğunu kontrol edin. – Jim

+0

Doğru sürüme işaret ediyor. 0.9.6.0. – Justin

+0

Çözümdeki projelerimden birinin Fody'nin eski bir sürümüne başvurması ve başka bir projenin Mono.Cecil'in farklı bir sürümüne bağlı olan yeni bir Fody'ye başvurması durumunda, yukarıda bahsettiğim "Mono.Cecil" sorununu buldum. Bunu Fermi kullanan tüm projeleri nuget'ten güncel hale getirerek ve yapı sorunlarım giderildikten sonra temizledim. –

cevap

1

Bu tür sorunları gidermek için SysInternals Process Monitor'u kullanabilirsiniz.

genel bir yaklaşımdır:

  1. çalıştırmak Process Monitor
  2. sadece
  3. dll eksik konuyu
  4. göz çoğaltmak size uygulamayı izlemek üzere bir filtre uygulamak. Bu bölüm

    1. Bir DLL bulunamadı olmayabilir birkaç sefer beri
    2. ama nihayet DLL olmayabilir
    3. ("Başarı") bulunabilir ("Yol bulunamadı"), biraz zor Aradığınız ama bu DLL

    bir bağımlılık Yani asla bulundu bir DLL bulmalıyız. Ve bulunmayan ancak sonraki bir denemede bulunan DLL'leri istemiyorsunuz.

Eh, bu süreç oldukça zaman alıcı olabilir, bu yüzden aracı Process Monitor Log Analyzer geliştirdi. Bununla birlikte, suçluyu daha kısa sürede bulabilmelisiniz.

  1. sadece
  2. sorunu
  3. XML olarak sonucu ("Başarılı" "bulunamadı Yol" tüm öğeleri, tutmak ve) kurtarmak çoğaltmak Başvurunuzu izlemek için bir filtre uygulamak çalışma Process Monitor
  4. XML'yi Log Analyzer
  5. 'dan yukarıdan aşağıya doğru açın, DLL'lerin varlığını kontrol edin. Araç, hiçbir zaman bulunmayan DLL'leri gösterecektir.

Yasal Uyarı: Bu metinden açık hale olmasaydı ben, serbest aracın yazarıyım.

+0

Cevabınız için teşekkür ederiz. Uygulamamı izleyerek tam olarak ne demek istediğimi biraz kafam karıştı. Derleyicime başvuruyor musunuz? (VS 2013). Uygulamamı artık Fody yüzünden derleyemem. – Justin

+0

@Justin. Evet, DLL bulamıyor VS2013 ise, VS2013 (devenv.exe) izleyin. Bununla birlikte, VS 2013, derleyici olarak ayrı bir exe kullanabilir ve ardından onu izleyebilir. Bilmiyorsanız, sadece her şeyi izleyin ve daha sonra filtreleyin. –

+0

Pekala Yarın işten ayrılacağım, kısa bir süre sonra işten ayrılacağım. Tekrar teşekkürler. – Justin

11

Hatanız aslında ModuleWeaver adlı bir sınıf bulmakta gibi görünüyor. Bu sınıf, Fody paketinin bir parçasıdır.

Sadece ile nuget paket yöneticisindeki paketi güncellemeden:

update-package Fody -reinstall 

muhtemelen bunu düzeltmek olacaktır.

Bunun başarısız olması: app.config dosyanızın hatalı yönlendirmeler olmadığından emin olun. Bu bölümü kaldırın, tüm yönlendirmeleri kaldırın. Görsel stüdyo genellikle gerekli olanları geri ekler.

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> 
     </dependentAssembly> 

başarısız olursa, başarısız olup bağımlı olan montaj bulmaya, tekrar deneyin. Bir satır komut satırı uygulaması yazabilir veya LinqPad'i kullanabilirsiniz.

Zaten kullanmıyorsanız, LinqPad deneyebilirsiniz, bunu yapıştırın.

Assembly.LoadFile("path to Fody"); 
Assembly.LoadFile("path to Mono.Cecil"); 

Eksik kitaplığı detaylandıran bir istisna almalısınız.

+0

Maalesef şu anda tüm bunları denedim ve meclisleri LinqPad'e yüklerken hiç çıktı almıyorum (bu yüzden LinqPad'in en azından montajları düzgün bir şekilde yüklediğini varsayarak). Dikkat et, şimdi hata "FodyIsolated" bulamadığı için değişti – Justin

+0

Daha fazla bağlam olmadan zor olacak. Hatanız aynı dizinden linqpad içinde doğru şekilde yüklenirse mono.cecil yüklendiğinde görünüyor, o zaman sorun muhtemelen daha derindir. Sürüm kontrolü kullanıyorsanız, temiz bir dizine göz atmayı ve tekrar denemeyi denerdim. Bir yerde bir montaj uyuşmazlığı var. Hepimiz oradaydık, kararın ne olduğunu bilmek isteyeceğim. Denemek için başka bir şey düşünebilirsem daha fazla tavsiyede bulunmaya çalışacağım. – Jim

+0

Maalesef önceki yapıları denemeye yardımcı olmadı. Daha sonra temiz bir dizinden deneyebilirim. Söylediğiniz gibi, Windows yükleme/VS yüklememde bir şey gerçekten senkronize veya yanlış eşleşti. Şu anda VS kurulumumu "Onarıyorum" ve şu anda meclisleri olması gerektiği gibi geri getirip getirmediğini görmek için bir veya iki günlüğüne Windows'u geri yüklemeyi deneyebilirim. Çözümün ne olduğunu yazacağımdan emin olacağım. Bu arada yardımın için teşekkürler. – Justin

1

Eğer (Ben doğru anladım ise) farklı Fody sürümleri ile projeler aynı Nuget paketleri klasörünü kullanamazsınız belirten bu bilgi, yarar sağlayabilecek benzer hataları almak bazıları: Installing multiple versions of PropertyChanged breaks compilation

Fody paketini yeniden yükleme tüm projelerde de sorunu çözüyor, ancak hepsinin aynı sürümüne geçmesi daha kolay olabilir.

1

internette bulabildiğim tüm çözümleri denedikten sonra benim için çalıştı aşağıdaki:

  1. kapatın Visual Studio.
  2. PCL projenizde ve {platform} projenizde Debug ve Release klasörlerini silin. Benim için bunlar MyPCLProjectName\bin\ ve iOS\bin\iPhoneSimulator\ gibi bir şeyde bulunuyordu.
  3. düzenleyin PCL ve {platform} .csproj dosyası ve <Import Project="$(MSBuildExtensionsPath32)\...
  4. Visual Studio yeniden açma başlatır biri için hariç tüm <Import> etiketleri kaldırın.
  5. Paketleri geri yükleyin (bu adım, Visual Studio'yu yeniden açtığınızda otomatik olarak yapılabilir) - Solution Explorer > right-click solution > Restore NuGet Packages. Komut satırından bu çalışan
1

Eğer budala kullanıyorsanız,:

git clean -xdf 
İlgili konular