49

問題はここに移動され、ここ に文書化されていると思いますが、Visual Studio のバグである可能性がありますが、誰かが回避策を知っているかどうか疑問に思っています。

基本的に、ビルド前のイベントで次の 2 つの行が (特に) 次々と表示されます。

"C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:configuration=Release;platform=x86 /t:rebuild "$(SolutionDir)Folder1\Project1.csproj"

"C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:configuration=Release;platform=x86 /t:rebuild "$(SolutionDir)Folder2\Folder3\Project2.csproj" 

最初の 1 つは成功し、もう 1 つはそれを言って失敗しますThe command ""C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:configuration=Release;platform=x86 /t:rebuild "*Undefined*Folder2\Folder3\Project2.csproj"" exited with code 1.

編集:
MSBuild自体がマクロを認識していないため、ビルド前と同じ行を持つ他のプロジェクトの1つが失敗したことが問題であることがわかりました。

4

6 に答える 6

1

アランの答えはまさに正しいパスですが、の親ディレクトリに移動する場合ProjectDir、または$(ProjectDir)..\出力が になる場合は、 msbuild で「親ディレクトリに移動」操作stringを実行する必要があります。 これを達成する方法は次のとおりです。

<PropertyGroup>
  <TrimmedDir>$([System.IO.Path]::GetDirectoryName($(ProjectDir)))</TrimmedDir>
</PropertyGroup>

ProjectDirこのコードは、 toTrimmedDir変数の親ディレクトリ パスを設定します。[System.IO.Path]::GetDirectoryName()この操作を実行します。

于 2019-01-16T16:55:39.693 に答える
0

これが多くのプロジェクトで発生するのか、1つまたは2つだけで発生するのかは指定しません。

1つまたは2つのプロジェクトのみにある場合、一時的な回避策は、$(SolutionDir)をFolder2が配置されている明示的なパスに置き換えることです。たとえば、次のようになります。

"C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:configuration=Release;platform=x86 /t:rebuild "C:\AllSolutions\ExampleSolutions\Folder2\Folder3\Project2.csproj"

ただし、プロジェクトの正しいパスを使用します。

于 2009-03-11T17:20:40.007 に答える