使用Visual Studio 2017 MVC ASP.NET Core发布"它们必须具有相同数量的项目"

时间:2016-11-19 07:15:06

标签: asp.net-core-mvc visual-studio-2017

当我尝试发布时,我收到以下消息:

  

严重级代码描述项目文件行抑制状态

     

错误" DestinationFiles"指的是1个项目," SourceFiles"指的是2个项目。它们必须具有相同数量的项目。

我让我的项目在我的localhost上工作,我现在正在寻找发布...但我得到了上述错误。我从VS 2015转换了我的项目,发布工作正常。为了确保我的旧发布配置文件不是问题,我删除了我的旧配置文件并设置了新的配置文件。我知道VS 2017刚刚在几天前发布,任何帮助都会很棒。

3 个答案:

答案 0 :(得分:3)

我认为Microsoft.NET.Publish.targets文件中存在错误。

我更改了DestinationFiles行(第99行和第127行),如下所示,现在可以正常工作

<Copy SourceFiles = "@(_ResolvedFileToPublishAlways)"
      DestinationFiles="@(_ResolvedFileToPublishAlways -> '$(PublishDir)%(RelativePath)')"
      OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
      Retries="$(CopyRetryCount)"
      RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
      UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
      UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">

答案 1 :(得分:3)

这是一个已知错误,在VS2017 RC工具已知问题文档中提到:

  

无法发布

     

无法发布ASP.NET核心Web应用程序(.NET Framework)

     
      
  • 问题:
  •   
     

如果您尝试发布ASP.NET核心Web应用程序(.NET   框架),您将遇到以下错误:&#34; DestinationFiles&#34;   指的是1个项目,&#34; SourceFiles&#34;指的是2个项目。他们一定   具有相同数量的项目

     
      
  • 解决方法:
  •   
     

无可用

https://github.com/aspnet/Tooling/blob/master/known-issues-vs2017.md

稍后再回顾一下是否提供了解决方法。

编辑&#34; Microsoft.NET.Publish.targets&#34;在文件夹&#34; C:\ Program Files \ dotnet \ sdk \ 1.0.0-preview4-004233 \ Sdks \ Microsoft.NET.Sdk \ build&#34;虽然没有为我工作。

答案 2 :(得分:0)

该错误已在最新的dotnet核心sdk中修复,在我的情况下,它是最新的1.0.0-rc4-004578。 不幸的是,在新版本中,他们认为.csproj文件甚至不需要默认的编译和资源模式,msbuild任务默认包含这些模式。 因此,如果它们包含在.csproj文件中,您将无法使用rc4进行编译。

以下是为我完成工作的步骤/更改:

  • 从[https://github.com/dotnet/cli]
  • 下载并安装dotnet sdk rc4或更高版本
  • 添加到解决方案/项目文件夹global.json,并以新的dotnet核心为目标,在我的情况下: { "sdk": { "version": "1.0.0-rc4-004578" } }
  • 打开你.csproj文件并编辑它(你现在可以直接在VS 2017中);将调试配置条件添加到默认模式项目组

    <ItemGroup Condition=" '$(Configuration)' == 'Debug' "> <Compile Include="**\*.cs" /> <EmbeddedResource Include="**\*.resx" /> </ItemGroup>

  • 确保您使用的是正确的(新)dotnet sdk:

    dotnet --versoin

  • 使用配置设置发布

    发布您的项目

    dotnet publish PATH\MyPorject.csproj -c Release -o OUT_DIR

注意我们在.csproj文件中保留了默认编译模式的部分但是有调试配置条件需要,如果你想让你在VS 2017 RC中编译和运行项目,那就是使用dotnet sdk preview4。
请记住您的活动配置应该是Debug。

您可以在[https://github.com/dotnet/cli/issues/4759#issuecomment-274904448]

的dotnet团队主题下找到有关此处讨论的问题的更多详细信息