2010-07-21 10 views
16

Natychmiast po przejściu na wersję wizualną Studio 2010 i strukturę 4.0 nasza kompozycja zaczęła pękać z Nie można załadować błędu pliku lub zespołu.

Stwierdziliśmy, że 3,5 projekt nie mógłby odwołać 4,0 projekt jeszcze chcielibyśmy dostać ten błąd, ponieważ, jak mówi o błędach, Ten zespół jest zbudowany przez starcie nowszej niż aktualnie załadowanego starcie i nie mogą być załadowane .

Dlaczego dostaję Nie można załadować pliku lub błędu montażu w bibliotece System.Configuration DLL podczas korzystania z frameworka 4.0?

Od tego czasu rozwiązaliśmy ten problem, a tułów dobrze się układał.

Niedawno zrobiłem gałąź i tag i nagle ten błąd pojawił się ponownie, gdy próbuję zbudować gałąź; z wyjątkiem błędu dotyczącego jednego z naszych własnych odniesień do projektu .net 4.0 do biblioteki System.Configuration DLL.

Towps.Namespace.MyService.csproj w Core.Dev \ Towps Projetcs \ \ Application \ MyService:
RG0000: Nie można załadować Zgromadzenie odwołuje

„C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Configuration.dll ".
Złapany wyjątek BadImageFormatException z informacją "Nie można załadować pliku lub zespołu
" C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Configuration.dll "lub jedną z jego zależności .INTen zespół jest zbudowany przez środowisko wykonawcze nowsze niż obecnie załadowane środowisko wykonawcze i nie można go załadować. ". w ResGen (0, 0)

Próbowałem ustawić właściwość konkretnej wersji na tym systemie. Reakcja DLL pliku na true.
Widzę w jego właściwości, że wersja środowiska wykonawczego jest v4.0.30319, a wersja 4.0.0.0.
Ścieżka do pliku DLL ref jest C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Configuration.dll który dla mnie wygląda dobrze.

Ramy docelowe dla pliku csproj, który CrusieControl używa MSBuild do próby kompilacji, jest system docelowy 4.0. Znowu wydaje się dobrze.

Jest zbudowany w IDE dla obu gałęzi trunk &. Cruise Control zbudował go w bagażniku. Kompilacja gałęzi kończy się niepowodzeniem, gdy CrusieControl próbuje zbudować.

Jakieś pomysły, co może się wydarzyć?

Może to być niedopasowanie MSBuilda, ale zeskanowałem pliki konfiguracyjne i pliki probuild msbuild, których używa CruiseControl i nie ma odwołań do starszych wersji MSBuild; co ma sens, ponieważ wszystkie zostały zaktualizowane, aby działało.

Oddział był po prostu kopią bagażnika, więc mam problem z określeniem, co może być różnica!

Odpowiedz

4

Okazuje się, że po rozgałęzieniu wszystkie pliki .proj w moim katalogu kompilacji gałęzi, z których korzysta cc.net, powróciły do ​​korzystania z ToolVerison = "3.5". Myślałem, że popełniłem wszystkie wersje Pro ToolsVersion = "4.0" i zmieniono konfigurację na trunk, z którego zrobiłem gałąź; ewidentnie nie.

2

Różnica może łatwo wskazywać ścieżki, które nie są już ustawione na nowej gałęzi. Jednak w twoim opisie nie ma logu. Jakie są dostępne opcje wiersza poleceń? W ccnet.config, a także wszelkich innych, które mogą się dostać, jeśli ccnet.config wskazuje na skrypt budujący, który wywołuje msbuild zamiast bezpośrednio do pliku .sln lub .csproj.

Włącz OBD, a następnie porównaj rozdzielczości odniesienia (lub zamówienie konstrukcyjne itp.) Dla tego zespołu lub innych zaangażowanych/w pobliżu.

Podajesz również ścieżkę do msbuild na obu?

msbuild4="C:\WINNT\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"

<msbuild> 
    <executable>$(msbuild4)</executable> 

w ccnet.config?

Widziałem to zgłosić 2.0 build wykonywalny podczas msbuild4 /tv:3.5:

<Message Text="MSBuildToolsPath:$(MSBuildToolsPath)" /> 
<Message Text="MSBuildToolsVersion:$(MSBuildToolsVersion)" /> 

MSBuildToolsPath:C:\WINNT\Microsoft.NET\Framework\v2.0.50727 
MSBuildToolsVersion:2.0 

tak, że nie wydaje się bardzo użyteczne.

Chciałbym zobaczyć bloki konfiguracyjne dla gałęzi i trunk.

Wiem, że miałem pewne ścieżki w buildscript, które zawiodły w moim oddziale, ponieważ istniała zakodowana ścieżka, która nie byłaby ważna dla gałęzi. Musiałem dostosować ccnet.config, aby przekazać argumenty dla tych elementów, aby zastąpić oddział.

0

Proszę sprawdzić wersję framework .net obsługiwaną przez klienta. Na przykład sharepoint2010 nie będzie obsługiwać biblioteki dll zbudowanej przez 4.0 lub nowszą platformę .net. Będzie obsługiwał tylko 3,5 lub mniej.

0

Trochę za późno, wiem, ale jeśli ktokolwiek inny ma ten problem, spróbuj dodać RuntimeVersion do pliku .dna, jeśli jeszcze nie istnieje.

<DnaLibrary Name="PROJECTNAME" RuntimeVersion="v4.0"> 
Powiązane problemy