ビルド中に表示されるエラー: エラーMSB4102:要素の "Project"属性の値が無効です。パラメータ "path"の長さをゼロにすることはできません。Visual Studio 2017、Service Fabricプロジェクト、Sdk対象:SFプロジェクトパッケージ化時のエラー
複製手順は簡単です。 VS 2017 RC 2 Web APIを使用してASP.Net Coreをターゲットとした新しいサービスファブリックアプリケーションを作成します。 次に、サービスファブリックプロジェクトをパッケージ化します。
VS. 2017の一部であるMicrosoft.VisualStudio.Azure.Fabric.ApplicationProject.targetsにバグがあると思われます。 このディレクトリにあるもの:C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \サービスファブリックツール
sdkターゲットファイルには次のステートメントがあります。
<PropertyGroup Condition="'$(LanguageTargets)' == ''">
<LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
<LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(MSBuildToolsPath)\Microsoft.VisualBasic.targets</LanguageTargets>
</PropertyGroup>
<!-- TODO: Generate error if LanguageTargets property isn't set here. This would happen, for example if an .fsproj referenced the .NET Sdk
but not the FSharp one. See https://github.com/dotnet/sdk/issues/448 -->
<Import Project="$(LanguageTargets)"/>
あなたがそれに慣れていない場合、少し難解です。しかし。本質的には、.csprojロードであればCSharpターゲットをロードし、VBターゲットでは.vbprojロードであれば何もしません。 次の行は、指定されたターゲットをインポートしようとします。
サービスファブリックプロジェクトの場合、これは.sfprojです。つまり、LanguageTargetsは空白のままであり、このポストの上部にエラーが表示されます。 SFターゲットファイルは、この行に達する前に、私が思った言語ターゲットを設定する必要があります。
私は、このsdk.targetsファイルは、まだVS 2017サービスファブリックプロジェクトを処理するように更新されていないいくつかのデフォルトテンプレートであると思われます。
可能な答えですが、私はVSによってインストールされたSdk.targetsファイルを編集する考えが嫌いです。このエラーを過ぎて取得し、ビルド内の他のエラーが発生することはありませんSdk.targetsにこの行を変更する: