14

MSVS 11Betaをインストールした後、MSVS10でコンパイルの問題が発生しました。ここで、C#プロジェクトをMSVS 10(MSVS 10で作成されたプロジェクト、ターゲットフレームワーク:3.5)でコンパイルすると、エラーが発生しMSB4216MSB4028出力ウィンドウに次のテキストが表示されます。

1>Task "GenerateResource" skipped, due to false condition; ('%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' != 'CLR2') was evaluated as ('Resx' == 'Resx' and '' != 'false' and 'CLR2' != 'CLR2').
1>Task "GenerateResource"
1>  Launching task "GenerateResource" from assembly "Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" in an external task host with a runtime of "CLR2" and a process architecture of "x86".
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2199,5): error MSB4216: Could not run the "GenerateResource" task because we could not create or connect to a task host with runtime "CLR2" and architecture "x86".  Please ensure that (1) the requested runtime and/or architecture are available on the machine, and (2) that the required executable "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NetFX 4.0 Tools\MSBuildTaskHost.exe" exists.
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2217,7): error MSB4028: The "GenerateResource" task's outputs could not be retrieved from the "FilesWritten" parameter. Object does not match target type.
1>Done executing task "GenerateResource" -- FAILED.

これらのエラーを修正するにはどうすればよいですか?

編集:

  1. 言及されたファイル「C:\ ProgramFiles(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NetFX 4.0 Tools\MSBuildTaskHost.exe」が存在します。
  2. C++プロジェクトは問題なくコンパイルされています。
  3. VS10を再インストールしても問題は解決しません。
  4. これはGenerateResourceタスクであり、resx-fileをコンパイルする必要がありますが、例外が生成されます。

<!-- But we can't use those parameters if we're targeting 3.5, since we're using the 3.5 task -->

<GenerateResource
    Sources="@(EmbeddedResource)"
    UseSourcePath="$(UseSourcePath)"
    References="@(ReferencePath)"
    AdditionalInputs="$(MSBuildAllProjects)"
    NeverLockTypeAssemblies="$(GenerateResourceNeverLockTypeAssemblies)"
    StateFile="$(IntermediateOutputPath)$(MSBuildProjectFile).GenerateResource.Cache"
    StronglyTypedClassName="%(EmbeddedResource.StronglyTypedClassName)"
    StronglyTypedFileName="%(EmbeddedResource.StronglyTypedFileName)"
    StronglyTypedLanguage="%(EmbeddedResource.StronglyTypedLanguage)"
    StronglyTypedNamespace="%(EmbeddedResource.StronglyTypedNamespace)"
    StronglyTypedManifestPrefix="%(EmbeddedResource.StronglyTypedManifestPrefix)"
    PublicClass="%(EmbeddedResource.PublicClass)"
    OutputResources="@(EmbeddedResource->'$(IntermediateOutputPath)%(ManifestResourceName).resources')"
    MSBuildRuntime="$(GenerateResourceMSBuildRuntime)"
    MSBuildArchitecture="$(GenerateResourceMSBuildArchitecture)"
    Condition="'%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' == 'CLR2'">
  1. MSBuildスクリプトをデバッグしようとしました( .csproj)。GenerateResource致命的なタスクの直前に、すべてのプロパティアイテムをチェックしました。「8.0A」については何もありませんでしたが、「7.0A」についてだけでした
4

8 に答える 8

17

この問題を解決するための醜い方法があります:フォルダの名前を変更します"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A"。私はこの答えを受け入れるのが嫌いです。

于 2012-05-10T16:15:06.100 に答える
8

ユーザー名はどのくらいですか?

ユーザー名が20文字の場合、バグがあるようです。ユーザー名が19文字以下の場合は、正常に機能します。

接続に関する問題を開きました。

編集:接続の問題で提案されているように 、環境変数DisableOutOfProcTaskHostをtrueに設定してみましたか?

于 2012-08-20T16:17:58.317 に答える
1

この問題は、VS2010をインストールしてから.NET Framework 4.5をインストールした後、TFS2010ビルドサーバーで発生しました。これにより、.NET 4.5プロジェクトをビルドできましたが、ビルドしようとしたCLR2(.NET 2.0 -3.5)を対象とするVS2008プロジェクトでは、エラーが返されました。この問題について話している一握りのサイトの提案はどれもうまくいきませんでした。

  1. 再起動-問題は修正されませんでした
  2. 環境変数およびプロジェクトファイル内でDisableOutOfProcTaskHost=trueを設定-問題は修正されませんでした
  3. ビルドアカウントのユーザー名はすでに20文字未満でした
  4. WindowsSDKフォルダーの名前を変更する-VS2012と8.0ASDKがインストールされていないため、該当なし....NETFramework4.5のみ。

いずれにせよ、これを修正するために、.NET 4.5をアンインストールし、VS2010を修復してから、ビルドサーバーを再起動しました。これで、VS2008およびVS2010プロジェクトを問題なくビルドできるようになりました。

幸いなことに、そのチームが.NET 4.0に戻ることを決定したため、.NET4.5プロジェクトをビルドする必要がなくなりました。

于 2013-02-05T17:15:54.917 に答える
1

同様の質問がMSDNフォーラムで行われました。VS11のインストール後に再起動しましたか?

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/7d955d96-ff73-47d3-8830-85ea321eb4ab

于 2012-04-20T14:35:57.597 に答える
1

もう1つの可能な修正は、プロジェクトのターゲットフレームワークを.Net4.0に変更することです。それは必ずしも解決策ではありませんが、他のすべてが失敗した場合は確かに可能性があります。

于 2013-03-27T13:06:03.477 に答える
0

私のために働いた:問題のあるフォルダーのbinとobjフォルダーを削除し、ソリューションを再起動します

于 2014-07-29T15:43:16.293 に答える
0

私の場合、32ビットのWindows 7マシンでソリューションを構築しようとすると、そのエラーメッセージが表示されました。エラーを解決する方法は、プロジェクトを右クリックしてプロパティを選択し、[ビルド]タブに移動することでした。ここでは、「プラットフォームターゲット」を「任意のCPU」から「x86」に変更しました。HTH

于 2014-08-20T21:20:44.250 に答える
0

設定DisableOutOfProcTaskHost = true環境変数の設定は私のために働いた。

于 2015-04-14T14:09:58.470 に答える