【问题标题】:Publishing with Visual Studio 2017 MVC ASP.NET Core "They must have the same number of items"使用 Visual Studio 2017 MVC ASP.NET Core 发布“它们必须具有相同数量的项目”
【发布时间】:2017-01-27 17:19:14
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我将 DestinationFiles 行(第 99 行和第 127 行)更改如下,现在它可以工作了

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

    【讨论】:

      【解决方案2】:

      这是一个已知错误,在 VS2017 RC Tooling Known Issues 文档中有所提及:

      无法发布

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

      • 问题:

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

      • 解决方法:

      暂无

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

      稍后回头看看是否提供了解决方法。

      在文件夹“C:\Program Files\dotnet\sdk\1.0.0-preview4-004233\Sdks\Microsoft.NET.Sdk\build”中编辑“Microsoft.NET.Publish.targets”对我不起作用不过。

      【讨论】:

      • 我在VS2015中创建了一个项目。能够从那里发布。将其转换为 VS2017。也能够从 VS2017 发布。然后经过一天的开发,我尝试从 VS2017 再次发布,它不再工作,收到上面指定的错误。所以看起来这也可能发生。
      【解决方案3】:

      该错误已在最新的 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 团队线程下找到有关此处讨论的问题的更多详细信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-29
        • 2017-04-02
        • 2018-06-09
        • 1970-01-01
        • 2018-08-28
        • 1970-01-01
        相关资源
        最近更新 更多