【问题标题】:Project builds but can't publish项目构建但无法发布
【发布时间】:2018-06-14 15:22:59
【问题描述】:

我有一个 MVC 项目,由于未知原因拒绝发布到 PC 中的本地文件夹。

日志内容如下:

3>------ Publish started: Project: Admin, Configuration: Release Any CPU ------
3>Connecting to D:\Deploys...
3>Project "Admin.csproj" (GatherAllFilesToPublish target(s)):
3>    Building with tools version "14.0".
3>    Target "ValidateMSBuildToolsVersion" skipped. Previously built unsuccessfully.
3>Done building project "Admin.csproj" -- FAILED.
3>
========== Build: 2 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

我在调试版本或调试配置时都没有遇到问题。

【问题讨论】:

  • 更详细的输出说明了什么? blogs.msdn.microsoft.com/saraford/2008/10/07/…
  • @Caramiriel 嗨!我已经在“诊断”选项中有它。 “详细”的也输出相同。
  • 尝试清理/重建。重新启动视觉工作室。
  • @JMawer 嗨!已经这样做了。删除obj/bin文件夹,重启VS,重启PC。
  • 也许您没有发布到该文件夹​​位置的权限?您是否尝试过安装到您确定具有读/写权限的位置?

标签: c# asp.net asp.net-mvc visual-studio visual-studio-2015


【解决方案1】:

所以我成功了。

问题在于“Microsoft.Net.Compilers”的版本。我从 v2.6.1 降级到 v2.4.0。

我不知道为什么,如果有人知道会很酷。

【讨论】:

  • 谢谢这个问题让我很紧张,真的很想知道为什么会这样。
  • 不仅仅是网络发布的问题;我遇到的问题是我的解决方案重建总是因此而失败(两个 MVC 项目,一个作为另一个的依赖项,如果仍然需要构建第一个项目,第二个项目总是会失败)。
  • 根据 [github.com/dotnet/roslyn/wiki/NuGet-packages],编译器包的 2+ 个版本用于 VS2017 和 C#7。另请参阅 [github.com/dotnet/roslyn/issues/19128] 了解在哪里支持的内容。为什么它实际上适用于 2.4 而不是 2.6.1(它也不应该适用于 2.4);我只能想象构建任务是用 2.4 更新的,但不是用 2.6.1 更新的,所以 2.6.1 再次需要 MSBUILD 15(VS2015 有 MSBUILD 14)。
  • 也为我修复了 2.4.0。根据此处的重复建议:stackoverflow.com/questions/48272051/…
  • 有同样的情况,我刚刚卸载了.Net.Compilers。也解决了问题
【解决方案2】:

很抱歉重新打开线程,但对我来说,清理解决方案适用于 .NET.Compilers v2.7 (Visual Studio 2015)。

【讨论】:

  • 在 VS2017 中同样适用于我,同时删除了子项目中所有现有的 objbin 文件夹。
【解决方案3】:

将“Microsoft.Net.Compilers”从 v2.9.0 降级到 v2.4.0 就像一个魅力

【讨论】:

    【解决方案4】:

    我能够通过删除 NuGet 包“Microsoft.Net.Compilers”来完全解决我的问题,而不是降级到 2.4.0。

    (很长一段时间,如果我只是重新启动 VS,Publish 错误就会消失,但最终它停止工作。)

    【讨论】:

      【解决方案5】:

      首先,选择模式(调试或发布)。然后右键单击解决方案/项目,然后选择清理。然后选择重建。然后发布。

      【讨论】:

        【解决方案6】:

        这只是发生在我身上,结果证明这是一个简单的案例,即在剃须刀模板的 ViewComponent 调用中使用 int,而该参数应该是 Guid。由于某种原因 Intellisense 没有接收到它,我不得不打开详细的详细信息来查看构建过程中的错误。

        【讨论】:

          【解决方案7】:

          我在 Asp.net Core 2 MVC 2.1 中遇到了这个问题 所以我的解决方案中没有 Microsoft.Net.Compilers。我尝试重建所有项目,再次卸载/加载,但没有任何变化。

          1) 所以,我已将 VS 2017 15.7.3 升级到 15.8.7
          2) 然后从解决方案中的每个项目中删除所有 bin/release 目录内容。
          3) 然后从解决方案中的每个项目中删除所有 obj 目录内容。
          4) 然后一一重建所有项目。
          然后尝试发布并成功。

          如果我在旧的 Visual Studio 中从第 2 步开始尝试,可能会成功。

          【讨论】:

            【解决方案8】:

            尝试使用 Visual Studio 2017 打开解决方案

            我一直在从 Visual Studio 2015 构建和发布,因为这是我打开解决方案文件时版本选择器选择的 Visual Studio 版本。

            我尝试从 Visual Studio 2017 打开我的解决方案文件,并成功发布。

            【讨论】:

              【解决方案9】:

              我在 Properties > Build > Advanced 中切换到 C# 7.3,但不小心只在 Debug 配置中这样做了。发布时(使用 Release 配置)它仍然使用C# 7.0,它缺少我使用的一些语言功能。

              错误在错误列表窗格中不可见,仅在输出窗格中可见。

              “所有配置” 的语言版本设置为 C# 7.3 为我解决了这个问题。

              这是使用当前版本的 Visual Studio 2017,Microsoft.Net.Compilers包含在项目中。

              【讨论】:

                【解决方案10】:

                尝试删除 Microsoft.Net.Compilers Nuget 包。

                我尝试了很多东西,都没有成功。我这样做了,发布成功了。可以肯定的是,我将我的项目从 BitBucket 恢复到原始状态,测试发布失败,再次删除 nuget 包,它工作了。

                【讨论】:

                • 欢迎您!我编辑了你的问题以帮助澄清。感谢您找到此解决方案!
                【解决方案11】:

                我遇到了类似的问题。该项目构建良好,但当我发布它时,Azure 向我发送错误。

                我的项目目标 .NET 框架是 4.6.2 版本,我正在升级 Nugget 包,不幸的是我将我的 .NET 编译器升级到了最新版本,它与我的目标 .NET 版本不兼容。你应该可以在这里看到:

                Description of .NET Compilers

                My target framework

                我通过将 .NET 编译器降级到与我的 .NET Framework 兼容的版本来修复它(在我的情况下,要使用 4.6.2 框架,我需要使用 .NET Compiller 2.10)。

                【讨论】:

                  【解决方案12】:

                  我在项目中遇到了类似的问题:

                  1. .NET 4.7.2
                  2. MVC5 解决方案
                  3. 所有单元测试文件,文件名格式为:Tests.cs,如“HomeControllerTest.cs”
                  4. Microsoft Visual Studio Enterprise 2019,版本 16.6.4

                  对于该项目,以下 Azure DevOps Pipeline 设置有效:

                  MSBuild 参数:

                  /t:Publish;Build /p:PublishDir="$(build.artifactstagingdirectory)\" /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p: PackageLocation="$(build.artifactstagingdirectory)\"

                  Visual Studio 测试平台安装程序:最新稳定版

                  选择测试使用:测试程序集

                  测试文件:
                  *Tests.dll
                  !**\obj*

                  搜索文件夹:$(System.DefaultWorkingDirectory)

                  测试结果文件夹:$(Agent.TempDirectory)\TestResults

                  测试平台版本:由Tools Installer安装

                  其他控制台选项:/Framework:Framework45 /Diag:log.txt /Logger:console

                  构建平台:$(BuildPlatform)

                  构建配置:$(BuildConfiguration)

                  === YAML

                  步骤:

                  • 任务:VSBuild@1 displayName: '构建解决方案 ***.sln' 输入: 解决方案:'$(Parameters.solution)' msbuildArgs: '/t:Publish;Build /p:PublishDir="$(build.artifactstagingdirectory)\" /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p: PackageLocation="$(build.artifactstagingdirectory)\" ' 平台:'$(BuildPlatform)' 配置:'$(BuildConfiguration)' 干净:真实 最大CpuCount:真 restoreNugetPackages:真 createLogFile: 真

                  步骤:

                  • 任务:VisualStudioTestPlatformInstaller@1 displayName: 'Visual Studio 测试平台安装程序' 输入: 版本选择器:latestStable

                  步骤:

                  • 任务:VSTest@2 displayName: 'VsTest - testAssemblies' 输入: testAssemblyVer2:| *测试.dll !**\obj* vsTestVersion:工具安装程序 otherConsoleOptions: '/Framework:Framework45 /Diag:log.txt /Logger:console' 平台:'$(BuildPlatform)' 配置:'$(BuildConfiguration)' 诊断启用:真

                  步骤:

                  • 任务:发布测试结果@2 displayName: '发布测试结果**/TEST-*.xml' 输入: 测试结果格式:VSTest

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-01-23
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-11-29
                    相关资源
                    最近更新 更多