尝试发布时收到以下消息:
严重性代码 描述 项目文件行抑制状态
错误“DestinationFiles”指的是 1 个项目,而“SourceFiles”指的是 2 个项目。它们必须具有相同数量的项目。
我有我的项目在我的本地主机上工作,我现在正在寻找发布......但我收到了上述错误。我从 VS 2015 转换了我的项目,并且发布工作正常。为了确保我的旧发布配置文件不是问题,我删除了我的配置文件的旧工作副本并设置了一个新副本。我知道 VS 2017 几天前刚刚发布,任何帮助都会很棒。
尝试发布时收到以下消息:
严重性代码 描述 项目文件行抑制状态
错误“DestinationFiles”指的是 1 个项目,而“SourceFiles”指的是 2 个项目。它们必须具有相同数量的项目。
我有我的项目在我的本地主机上工作,我现在正在寻找发布......但我收到了上述错误。我从 VS 2015 转换了我的项目,并且发布工作正常。为了确保我的旧发布配置文件不是问题,我删除了我的配置文件的旧工作副本并设置了一个新副本。我知道 VS 2017 几天前刚刚发布,任何帮助都会很棒。
我认为 Microsoft.NET.Publish.targets 文件中存在错误。
我如下更改了 DestinationFiles 行(第 99 和 127 行),现在它可以工作了
<Copy SourceFiles = "@(_ResolvedFileToPublishAlways)"
DestinationFiles="@(_ResolvedFileToPublishAlways -> '$(PublishDir)%(RelativePath)')"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
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.
该错误已在最新的 dotnet core sdk 中修复,在我的情况下,它是最新的 1.0.0-rc4-004578。
不幸的是,在新版本中,他们认为 .csproj 文件甚至不需要其中的默认编译和资源模式,msbuild 任务将默认包含这些模式。
因此,如果它们包含在您的 .csproj 文件中,您将无法使用 rc4 进行编译。
所以这里是为我完成工作的步骤/更改:
{
"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 团队线程下找到有关此处讨论的问题的更多详细信息