質問

Cruse Controlを使用してビルドプロセスを管理しています。 VS2008プロジェクトをVS2010に変換すると、Webおよびクラスライブラリプロジェクトの3.5に設定されたターゲットフレームワークを残しています。

この時点で、私たちはすべてのソリューションをVS2010に変換していません。必要でない場合はそうではありません。

私は最近、クルーズコントロールが指すために使用するMSBUILDプロジェクトファイルを更新しました MSBuild 4.0 したがって、当社のビルドプロセスは、VS2010プロジェクトを構築できるようになります。

c: windows microsoft.net framework v4.0.30319 msbuild.exe

4.0フレームワークをターゲットにしているWebプロジェクトがコミットされるまで、すべてが順調でした。その時点で、このエラーがポップアップしました:

CS0433:タイプ 'System.Web.Routing.RouteCollection'は両方に存在します C: Windows Microsoft.net Assembly Gac_32 System.Web V4.0_4.0.0.0__B03F5F7F11D50A3A System.DllおよびC:プログラムファイル(x86)参照アセンブリ Microsoft Framework V3.5 system.web.routing.dll in global.asax.cs(15、43)

その時点で、私は気づきました Windows/Microsoft.NET/Assembly フォルダー。

現在...すべてのMSBUILDプロジェクトは、MSBUILD 4.0を使用していたとしても、3.5に設定されたツールバージョンをまだ持っていました。では、なぜ3.5のターゲットを絞ったビルドが新しい4.0アセンブリフォルダーを見て、この競合を見つけたのでしょうか?おそらく、MSBUILD 4.0を使用していたからでしょう。しかし、MSBUILDが使用するツールバージョンを変更できれば、これらの潜在的な競合を心配することなく3.5をターゲットにするように言うことができると思います。

この問題を解決するために、Cruise Controlが使用してToolSversionを4.0に変更する関連するMSBuildプロジェクトファイルに行きました。これにより、その紛争エラーが渡されました。しかし、今ではVS2010プロジェクトにまだ変換されていないソリューションにあるプロジェクトを構築しようとするたびに、次のようなエラーで壊れます。

MyProject.csproj in Somefilepath:lc0000: 'ファイルまたはアセンブリまたはその依存関係の1つをロードできませんでした。このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによって構築されており、ロードすることはできません。」 LC(0、0)

Visual Studio 2010にそのプロジェクトを含むソリューションを開き、変換を行い、それを作成してそれをコミットして別のビルドを強制した場合、そのエラーに合格して、まだ変換されていないプロジェクトが同じエラーを投げていることがわかります。

だから今、私は確実にMSBUILD 4.0を使用し、実際の4.0フレームワークをターゲットにしています。 4.0が3.5プロジェクトまたはVS2008ソリューションプロジェクトを構築できないのはなぜですか?

役に立ちましたか?

解決

問題は、プロジェクトの一部をVisual Studio 2010に移行したことです。2010年のプロジェクト(プロジェクト参照)を参照する2008年のプロジェクトは、このコンパイル時間エラーを提供することです。すべての.csprojファイルを2010年に更新してみて、再構築してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top