6

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

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

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

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

4

3 回答 3

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)">
于 2016-11-19T22:05:25.790 回答
3

This is a known bug and is mentioned in the VS2017 RC Tooling Known Issues document:

Unable to publish

Unable to publish ASP.NET Core Web Application (.NET Framework)

  • Issue:

If you try to publish an ASP.NET Core Web Application (.NET Framework), you will run into the following error: "DestinationFiles" refers to 1 item(s), and "SourceFiles" refers to 2 item(s). They must have the same number of items

  • Workaround:

None available

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

Look back later to see if a workaround is provided.

Editing "Microsoft.NET.Publish.targets" in folder "C:\Program Files\dotnet\sdk\1.0.0-preview4-004233\Sdks\Microsoft.NET.Sdk\build" didn't work for me though.

于 2016-12-14T20:15:33.530 回答
0

该错误已在最新的 dotnet core 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 文件中保留了默认编译模式的部分,但如果您想让项目在使用 dotnet sdk preview4 的 VS 2017 RC 中编译和运行,则需要使用调试配置条件。
只要记住你的活动配置应该调试。

您可以在 [ https://github.com/dotnet/cli/issues/4759#issuecomment-274904448]的 dotnet 团队线程下找到有关此处讨论的问题的更多详细信息

于 2017-01-27T09:19:14.863 回答