2

SDK7.1 を使用するために多くのプロジェクトを切り替えようとしています。これは、C++ プロジェクトではかなり簡単に思えます。プロジェクト設定の「プラットフォーム ツールセット」プロパティを「Windows7.1SDK」に変更すれば、すべて問題ありません。

ただし、C# プロジェクトでは (ビルド出力を診断モードにすると)、sgen、resgen、LC などのさまざまなツールが以前の SDK 7.0A ディレクトリ内から実行されることがわかります。または、Vistual Studio 2012 をインストールした一部のマシンでは、これらのツールの一部は v8.0A SDK フォルダーから取得されます。

ツールとツールが生成するアセンブリとの不一致により、次のようなさまざまなエラーが発生しているようです。

LC : error LC0000: 'Could not load file or assembly
'S:\Libraries\Bin\Release\Some.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.'

.csproj ファイルを編集できるようで、ほぼアドホックで、さまざまな SDKPath プロパティを再定義する BeforeBuild などのターゲットを編集できます。これにより、適切なツールの使用が強制されるようです。しかし、非常に「ハッキー」と感じる場合。また、まだエラーが発生するため、何かを設定していないに違いありません。

または、次のレジストリ値を変更できることがわかりました。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\SDK40ToolsPath

正しい SDK を指すようにします。しかし、これをサポートするために環境を変更しなければならないのは間違っています。製品の古いバージョンをビルドしたいのですが、これを行うために環境を切り替える必要があるのは見苦しく、エラーが発生しやすくなっています。

これを行う公式の方法はありますか?

ありがとう。

PS私はこの質問を見つけましたhttp://social.msdn.microsoft.com/Forums/en-MY/windowssdk/thread/ebc8914f-d4b5-44e7-8c76-10332d155812ポスターが同様のことを求めているようですが、質問は答えられなかったようです。

4

1 に答える 1

1

次の 2 つの記事では、カスタム ツール セットの定義について説明しています。おそらく、そのうちの 1 つは 7.1 SDK 用に定義する必要があり、それを使用するように MSBuild に指示できます。

http://msdn.microsoft.com/en-us/library/bb383796(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/bb397428.aspx

于 2012-08-24T13:11:57.877 に答える