0

を動作していないVSToolsPath。のVisual Studio 2017の拡張 - 私はそれは、デバッグ中にVisual StudioとMSBuildのから罰金コンパイルし、自分のローカルコンピュータ上でリリースVS 2017の古いVisual Studioの拡張機能を更新しています

これは私が使用していますMSBuildのコマンドラインです:しかし

msbuild VxCop.sln /p:ToolsHome=C:\ProgramData\chocolatey\bin /p:Configuration=Release /p:Platform="Any CPU" 

を、ビルドマシン上で(TFS 2010を構築する)ことがでthis error

で失敗し、同じコマンドラインでのMSBuild.exeを呼び出しますこれを修正するためにVSToolsPathを指定しようとしています。私は、このような.csprojでVSToolsPathエントリを変更すること(これは効果がなかったことので、考慮されるべきではないように思われた)と、コマンドライン上でそれを渡すなど、様々なものを試してみた:

msbuild VxCop.sln /p:ToolsHome=C:\ProgramData\chocolatey\bin /p:Configuration=Release /p:Platform="Any CPU" /p:VSToolsPath=Packages\Microsoft.VSSDK.BuildTools.15.1.192\tools\ 

この原因非常に奇妙なエラー:

CopyFilesToOutputDirectory:                       
    Copying file from "obj\Release\SymCop.dll" to "bin\Release\SymCop.dll".            
    SymCop -> H:\src\tools\VisualStudioExtensions\Main\VxCop\source\SymCop\bin\Release\SymCop.dll      
    Copying file from "obj\Release\SymCop.pdb" to "bin\Release\SymCop.pdb".            
Done Building Project "H:\src\tools\VisualStudioExtensions\Main\VxCop\source\SymCop\SymCop.csproj" (default targets). 

Done Building Project "H:\src\tools\VisualStudioExtensions\Main\VxCop\VxCop.sln" (Build target(s)) -- FAILED.   

Done Building Project "H:\src\tools\VisualStudioExtensions\Main\VxCop\build.proj" (default targets) -- FAILED.  


Build FAILED.               
    0 Warning(s)              
    0 Error(s)               

実際の拡張プロジェクトは、すべてのログに表示されていない、との誤差は、削ら、なしがあります。失敗し、リターンコードが非ゼロであり、VSIXプロジェクトが構築されていないようだ

を(その出力が不足している)としてではなく、ビルドリターンはうまくいけば、誰かがいくつかの提案

おかげ

編集があります。

今後これを読んでいる人には、同じファイルにさらに<Import>があって、$(VSToolsPath)への更新が気にならないという問題がありました。その輸入を変更する

はそれを修正:

<Import Project="$(SolutionDir)\packages\Microsoft.VSSDK.BuildTools.15.1.192\tools\VSSDK\Microsoft.VsSDK.targets" 
/> 

答えて

2

Visual Studio 2017 extension - VSToolsPath not working

を私はあなたのスクリプトに基づいて同じ結果を得ました。後、Microsoft.VSSDK.BuildTools.propsはあなたがImportの下に見つけることができ、プロジェクトファイルを開き、ファイルを投写するにはインポートされますプロジェクトにNuGetパッケージMicrosoft.VSSDK.BuildToolsをインストール:

<Import Project="..\packages\Microsoft.VSSDK.BuildTools.15.1.192\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.15.1.192\build\Microsoft.VSSDK.BuildTools.props')" /> 

次に、このファイルを小道具開き、スニペットスクリプトの下に気づくことができますこの場合

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup Label="VSSDK_NuGet_Configuration"> 
    <ThisPackageDirectory>$(MSBuildThisFileDirectory)..\</ThisPackageDirectory> 
    <VSToolsPath>$(ThisPackageDirectory)\tools</VSToolsPath> 
    <VsSDKInstall>$(VSToolsPath)\VSSDK</VsSDKInstall> 
    <VsSDKIncludes>$(VsSDKInstall)\inc</VsSDKIncludes> 
    <VsSDKToolsPath>$(VsSDKInstall)\bin</VsSDKToolsPath> 
    </PropertyGroup> 
</Project> 

、NuGetパッケージは$(ThisPackageDirectory)\toolsで値VSToolsPathを上書きします。だから、MSBuildのは、をスキップするプロジェクトファイルの次のステップでの値の設定を設定します:

<PropertyGroup> 
    <MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion> 
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
    <NuGetPackageImportStamp> 
    </NuGetPackageImportStamp> 
    </PropertyGroup> 

NuGetはすでに値$(VSToolsPath)を設定しているので、Condition="'$(VSToolsPath)' == ''"の値はだろう。、まとめ上記

C:\Users\Admin\Documents\Visual Studio 2017\Projects\VSIXProject2\packages\Microsoft.VSSDK.BuildTools.15.1.192\build\..\\tools 

VSToolsPathの値を:あなたは、この値に設定されています

<Target Name="CheckVSToolsPath" BeforeTargets="Build"> 
    <Message Text="$(VSToolsPath)"></Message> 
    </Target> 

:加えて、あなたは次のように、値が設定されているかどうかを確認するためにターゲットを追加することができます正しくインポートされたため、コマンドラインで渡す必要はありません。

詳細な調査の結果、以前のエラーの原因が見つかりました。「MSB4226:インポートしたプロジェクト(...)\ VSSDK \ Microsoft.VsSDK.targets」が見つかりませんでした。 ビルドサーバーに "VisualStudioVersion"のMSBuildプロパティを設定しないでください。

は、詳細情報Building a VSIX extension with the Visual Studio 2017 Build Toolsのリンクの下を参照してください:だからエラー "MSBuild4226" を解決するために

something that a machine with the full Visual Studio 2017 does and that a machine with the Build Tools 2017 does if you open a developer command prompt. Since I was not using it, I passed it as a parameter to the MSBuild script. It can be defined too inside the .csproj file, something that previous Visual Studio versions did automatically but recent versions don’t.

は、コマンドライン上のVisual Studioのバージョンを渡す必要があります。

msbuild VxCop.sln /p:ToolsHome=C:\ProgramData\chocolatey\bin /p:Configuration=Release /p:Platform="Any CPU" /p:VisualStudioVersion=15.0 

このコマンドを使用した後エラー、MSBuild 4226が解決されました。

これが役に立ちます。

+0

Thanks Leo。私はそのパラメータを追加しようとしましたが、役に立たなかった。問題は、Visual Studioのバージョンがビルドマシンに存在しないパスに接続されていることです。なぜなら、ビルドマシンにはVSビルドツールしかないからです。 編集:私はオフィスに戻ってきたときに明日の詳細を追加しますが、実際のインポートをファイルからさらに探し出し、VSToolsPathを気にしないように変更しました($(SolutionDir) \パッケージ)。 もう一度ありがとう – JohnL

関連する問題