8

Visual Studio 2012 を .NET 4.5 と共にインストールした後、msbuild を使用してビルド中に次のエラーが発生し始めました。

  • エラー MSB4064:

「SdkToolsPath」パラメーターは、「GenerateResource」タスクではサポートされていません。パラメーターがタスクに存在し、それが設定可能なパブリック インスタンス プロパティであることを確認してください。

  • エラー MSB4063:

「GenerateResource」タスクをその入力パラメーターで初期化できませんでした。プロジェクト ファイルのヘッダーは次のとおりです。

    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

上記のエラーを引き起こす可能性のある.NET 4.5で行われた変更について何か考えはありますか?

4

4 に答える 4

5

これは、C:\Windows\Microsoft.Net\v4.0.30319 にある Microsoft.Common.targets ファイルの問題です。Visual Studio 2012 をインストールすると、このファイルが変更されます。行われた変更の 1 つは、誰かが自分のマシンを Windows 8 にアップグレードした場合に GenerateResourceMSBuildRuntime を "修正" することです (詳細については、2271 行目の精巧なコメントを読んでください)。私の修正は、単に Microsoft.Common.targets ファイルの次の行をコメントアウトすることでした

<GenerateResourceMSBuildRuntime 
     Condition="'$(GenerateResourceMSBuildRuntime)' == '' and 
                 $([MSBuild]::DoesTaskHostExist(`$(TargetFrameworkAsMSBuildRuntime)`, `$(GenerateResourceMSBuildArchitecture)`))">$(TargetFrameworkAsMSBuildRuntime)</GenerateResourceMSBuildRuntime>
于 2012-09-26T06:31:53.463 に答える
1

バーナードが提案した回避策を実行した場合、実際にはより良い解決策です(「MSB6002: 「ResGen」タスクのコマンドラインが長すぎます」でビルドが失敗した場合)。プロジェクト ファイルから回避策を完全に削除することです。Microsoft は、Visual Studio 2012 SDK ツールを使用して、この回避策の必要性を実際に修正しました。

この問題に関する接続の議論を参照してください。

于 2012-09-28T02:18:35.833 に答える
0

私は同じ問題を抱えており、プロジェクトの 1 つで多数のリソース ファイルを処理するためにハックを使用していることを発見しました ( 「MSB6002: 「ResGen」タスクのコマンドラインが長すぎます」でビルドが失敗した場合)。 </a>)。

バージョン 3.5 のタスク ( GenerateResource Task )でサポートされていないすべての属性を削除した後、私のビルドは再び機能します。

于 2012-09-20T07:24:29.680 に答える