2016-07-20 3 views
1

私のビルドマシンでmsbuildを使ってsfprojをビルドしようとしていますが、これはIamがやっていることです。sfproj - outpathビルドエラー

<target ="package"> 
<foreach item="File" property="sfproj"> 
      <in> 
       <items refid="servicefabric.files.sfproj" /> 
      </in> 
      <do> 
       <exec program="${msbuild14.exe}"> 
        <arg value="${sfproj}" /> 
        <arg value="/p:Configuration=${config}" /> 
        <arg value="/p:Platform=x64" /> 
        <arg value="/target:Package" /> 
       </exec> 
      </do> 
     </foreach> 
</target> 

Iamは、ビルドマシンに乗るエラーが(_CheckForInvalidConfigurationAndPlatformターゲット)

ある - > 10時25分10秒[EXEC] C:\プログラムファイル(x86の)\ MSBuildの\ 14.0 \ binに\ Microsoft.Common.CurrentVersion.targets(724,5):エラー:OutputPathプロパティがプロジェクト 'App.sfproj'に設定されていません。このプロジェクトに対して有効な構成とプラットフォームの組み合わせを指定していることを確認してください。 Configuration = 'Debug' Platform = 'x64'。ソリューションファイルなしでプロジェクトを構築しようとしているため、このプロジェクトに存在しないデフォルト以外の構成またはプラットフォームを指定しているため、このメッセージが表示される場合があります。

+0

作業しているプロジェクトバージョン(.sfprojファイルのProjectVersionプロパティを確認してください)? 1.1の場合は、プロジェクトのNuGetパッケージを復元するようにしましたか? –

+0

はいこのステップの前にNugetリストアが実行されます。 – Senthil

+0

診断ログの詳細ログを有効にしておくと良いでしょう( "/ verbosity:diagnostic" MSBuildスイッチ)。 –

答えて

1

Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.1.0 Nugetパッケージには、sfproj自体のビルドをスキップするMSBuildターゲットが含まれているようです(これは成功するためには特定のオプションが存在します)。

私のケースでは、誤ってソース管理に不完全ないくつかのNugetパッケージフォルダをチェックインしました。 Visual Studioはフォルダーが存在するのを見て、それを再ダウンロードしようとしませんでした。 buildフォルダが存在し、MSBuildターゲットファイルが含まれていることを確認する必要があります。あなたの最善の策は、パッケージのフォルダを完全に削除して、あなたが新しいスタートで始めることを確実にすることです。

https://ijustwrite.software/2016/07/20/ouputpath-property-not-set/

1

私は同じ症状で問題に遭遇しました。 Azure SDKをアップグレードした後に私に起こったのですが、それは簡単にいくつかの方法で発生する可能性があります。問題は、sfprojファイルに、nugetパッケージが格納されているディレクトリにつながる2つのパスがあり、ファイルの最初と最後の行で不思議です。これは問題を引き起こします。なぜなら、あなたがnugetパッケージが格納されている場所を上書きするかもしれないからです(これはまれではありません)。これらは相対パスなので、指定した場所にパッケージを取得するのは簡単ですが、プロジェクトの行が ".. \ packages"を指すようにすると、Visual Studioはパッケージを復元するが、彼らが間違った場所でそれらを探しているので、彼らが復元されたとは決して考えないでください。

sfprojファイルのパスを変更して、ダウンロードするように設定されているナゲットパッケージがある場所を指すようにするだけです(この設定はnuget.configファイルにあります。あなたのプロジェクトディレクトリ)。

これら

は私のsfprojファイル内の2本の破線のとおりです。

<Import Project="..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.props" Condition="Exists('..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" /> 
<Import Project="..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets" Condition="Exists('..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" /> 

私は(二つのディレクトリ私のプロジェクトファイルの上にある)私のnuget.configファイル内NuGetPackages \値ThirdPartyLibrariesを持っているので、これらの線が持っていました再度作業するために次のように変更する必要があります。

<Import Project="..\..\ThirdPartyLibraries\NuGetPackages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.props" Condition="Exists('..\..\ThirdPartyLibraries\NuGetPackages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" /> 
<Import Project="..\..\ThirdPartyLibraries\NuGetPackages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets" Condition="Exists('..\..\ThirdPartyLibraries\NuGetPackages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.3.0\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" /> 

これで修正されました。私は運が良かった.2つのsfprojファイルがあった.1つはこの問題で、もう1つはありませんでした。