Azure service fabric Visual Studio 2017,服务结构项目,Sdk目标:打包SF项目时出错

Azure service fabric Visual Studio 2017,服务结构项目,Sdk目标:打包SF项目时出错,azure-service-fabric,Azure Service Fabric,生成期间显示的错误: 错误MSB4102:元素中“Project”属性的值“”无效。参数“路径”的长度不能为零 复制步骤很简单: VS 2017 RC 2。 使用Web API创建新的面向ASP.Net核心的服务结构应用程序。 然后尝试打包服务结构项目 我怀疑VS 2017中的Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets中存在漏洞。 位于此目录中的:C:\Program Files(x86)\Microsoft Vi

生成期间显示的错误: 错误MSB4102:元素中“Project”属性的值“”无效。参数“路径”的长度不能为零

复制步骤很简单: VS 2017 RC 2。 使用Web API创建新的面向ASP.Net核心的服务结构应用程序。 然后尝试打包服务结构项目

我怀疑VS 2017中的Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets中存在漏洞。 位于此目录中的:C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\Service Fabric Tools

在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)"/>

$(MSBuildToolsPath)\Microsoft.CSharp.targets
$(MSBuildToolsPath)\Microsoft.VisualBasic.targets
如果你不习惯的话,有点难以理解。但是本质上,它是说如果是.csproj加载CSharp目标,如果是.vbproj加载VB目标,如果两者都不执行任何操作。 然后,下一行尝试导入指定的目标

在一个ServiceFabric项目中,这是一个.sfproj,这意味着LanguageTargets是空的,我们得到的错误显示在本文的顶部。SF目标文件应该在到达这一行之前设置LanguageTargets

我怀疑这个sdk.targets文件是一些默认模板,尚未更新以处理VS 2017 service fabric项目

可能的答案,但我不喜欢编辑VS安装的Sdk.targets文件。在Sdk.targets中更改这一行可以克服此错误,并且不会在生成中导致任何其他错误: 发件人:马特·塔尔曼[

此问题应在VS 2017 RC的最新版本中修复。请确保您运行的是最新版本

但是,即使使用最新版本,如果VS或某些自动逻辑下载了Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0 NuGet软件包,而不是使用包装箱中附带的软件包,您也可能会看到此问题。与VS 2017 RC一起附带的NuGet软件包版本具有此问题的修复程序s问题。但是NuGet.org中存在的Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0 NuGet软件包没有修复程序。NuGet软件包(版本1.4.1)当前有更新包含已存在但未列出的修复程序。因此,如果需要使用该更新包,则需要对Service Fabric应用程序项目进行一些手动更改:

更新packages.config文件,使其引用Microsoft.VisualStudio.Azure.Fabric.MSBuild包的1.4.1版。 更新.sfproj文件,方法是将“Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0”的实例替换为“Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.1”。 通常,当您更新NuGet包版本时,NuGet会自动为您更新项目文件,但由于NuGet在Service Fabric应用程序项目类型方面存在问题,这些更新不会自动发生,这就是您需要手动进行这些更改的原因(以及为什么该包被定义为未在NuGet.org中列出)。

发件人:Matt Thalman[

此问题应在VS 2017 RC的最新版本中修复。请确保您运行的是最新版本

但是,即使使用最新版本,如果VS或某些自动逻辑下载了Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0 NuGet软件包,而不是使用包装箱中附带的软件包,您也可能会看到此问题。与VS 2017 RC一起附带的NuGet软件包版本具有此问题的修复程序s问题。但是NuGet.org中存在的Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0 NuGet软件包没有修复程序。NuGet软件包(版本1.4.1)当前有更新包含已存在但未列出的修复程序。因此,如果需要使用该更新包,则需要对Service Fabric应用程序项目进行一些手动更改:

更新packages.config文件,使其引用Microsoft.VisualStudio.Azure.Fabric.MSBuild包的1.4.1版。 更新.sfproj文件,方法是将“Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.0”的实例替换为“Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.4.1”。 通常,当您更新NuGet包版本时,NuGet会自动为您更新项目文件,但由于NuGet在Service Fabric应用程序项目类型方面存在问题,这些更新不会自动发生,这就是您需要手动进行这些更改的原因(这也是为什么包被定义为未在NuGet.org中列出的原因)