2017-01-03 8 views
0

ビルド中に表示されるエラー: エラー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にこの行を変更する:

答えて

2

から:マット・Thalman [https://social.msdn.microsoft.com/Forums/en-US/19fd8e9c-a517-4361-b50d-656d679d9c8b/visual-studio-2017-service-fabric-project-sdk-targets-error-when-packaging-sf-project?forum=AzureServiceFabric]

でこの問題は、最新バージョンで修正されなければなりませんVS 2017 RC。あなたは最新のものを実行していることを確認してください。

しかし、最新のバージョンであっても、VSまたは一部の自動化されたロジックが、Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0 NuGetパッケージをダウンロードした場合、この問題が発生する可能性があります。パッケージは箱に同梱されています。 VS 2017 RCのボックスに同梱されているNuGetパッケージのバージョンには、この問題の修正が含まれています。しかし、NuGet.orgに存在するMicrosoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0 NuGetパッケージには修正がありません。存在しているが未登録の修正を含むNuGetパッケージ(バージョン1.4.1)のアップデートがあります。したがって、更新されたパッケージを使用する必要がある場合は、Service Fabric Applicationプロジェクトを手動で変更する必要があります。

Microsoftのバージョン1.4.1を参照するようにpackages.configファイルを更新します。 VisualStudio.Azure.Fabric.MSBuildパッケージ。 "Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0"のインスタンスを "Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.1"に置き換えて、.sfprojファイルを更新します。 通常、NuGetは、NuGetパッケージのバージョンを更新すると自動的にプロジェクトファイルの更新を行いますが、NuGetがService Fabric Applicationプロジェクトタイプで発生する問題のため、これらの更新は自動的には発生しません。手動で変更されます(パッケージがNuGet.orgに非公開として定義されている理由)。

関連する問題