项目可以构建但无法发布

25

我有一个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 ==========

我在发布版或调试版配置下都没有遇到过调试问题。


更详细的输出会说些什么?https://blogs.msdn.microsoft.com/saraford/2008/10/07/did-you-know-you-can-configure-the-msbuild-verbosity-in-the-output-window-329/ - Caramiriel
@Caramiriel 您好!我已经在“诊断”选项上了。 “详细”选项也输出相同的结果。 - Hrodger
尝试进行清理/重建。重新启动Visual Studio。 - Joseph Mawer
@JMawer 你好!我已经做了。删除obj/bin文件夹,重新启动VS,重启电脑。 - Hrodger
也许您没有发布到该文件夹位置的权限?您是否尝试安装到您确定具有读/写权限的位置? - Joseph Mawer
看看我的回答 - 希望能有所帮助 https://dev59.com/D2sz5IYBdhLWcg3wFUC_#49354473 - Alexey Shevelyov
12个回答

67

所以,我解决了这个问题。

问题出在"Microsoft.Net.Compilers"的版本上。我将其从v2.6.1降级到v2.4.0。

我不知道原因,如果有人知道,那就太好了。


1
谢谢,这个问题真的让我很烦,我真的很想知道为什么会发生这种情况。 - Monroy
7
根据 [https://github.com/dotnet/roslyn/wiki/NuGet-packages],编译器包的2+版本适用于VS2017和C#7。另请参见[https://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)。 - Bjørn van Dommelen
2
我遇到了同样的问题,我只是卸载了.Net.Compilers,这也解决了问题。 - Jaime Yule
我使用了VS2015并遇到了相同的问题。这对我有用,解决了这个问题。 - Telan Niranga
显示剩余5条评论

2

非常抱歉重新打开这个帖子,但对于我来说,在.NET.Compilers v2.7(Visual Studio 2015)中清理解决方案有效。


在VS2017中,我也是这样做的,同时删除了所有子项目中现有的“obj”和“bin”文件夹。 - Rory McCrossan

1

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


1
我最终解决了我的问题,方法是移除NuGet包"Microsoft.Net.Compilers",而不是降级到2.4.0。
(有一段时间,如果我简单地重新启动VS,发布错误就会消失,但最终这种方法也不再奏效。)

1
将 "Microsoft.Net.Compilers" 从 v2.9.0 降级到 v2.4.0,效果非常好。

0
我在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步开始尝试,它会成功。

0

这种情况刚刚在我身上发生了,原来只是在 Razor 模板中从 ViewComponent 调用时使用了 int,而应该该参数为 Guid,因此出了问题。由于某些原因,Intellisense 没有捕捉到问题,我只好开启详细模式来查看编译过程中的错误。


0

我在属性 > 生成 > 高级中切换到了C# 7.3,但不小心只为调试配置这样做了。当发布(使用发布配置)时,它仍然使用缺少我使用的某些语言功能的C# 7.0

错误在错误列表窗格中不可见,只在输出窗格中显示。

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

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


0

我曾经遇到过类似的问题。我的项目在构建时没有问题,但是当我将其发布到Azure时,出现了错误。

我的项目目标是.NET Framework 4.6.2版本,并且我正在升级Nugget包。不幸的是,我升级了我的.NET编译器到最新版本,但它与我的目标.NET版本不兼容。您应该能够在这里看到:

.NET编译器的描述

我的目标框架

我通过将.NET编译器降级到与我的.NET Framework兼容的版本来解决了这个问题(在我的情况下,要使用4.6.2框架,我需要使用.NET Compiller 2.10)。


0

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

我尝试了很多方法,但都没有成功。我尝试了这个方法后,发布成功了。为了确保,我将项目从 BitBucket 恢复到原始状态,测试发现发布失败,然后再次移除了这个 nuget 包,结果又成功了。


欢迎!我编辑了你的问题以帮助澄清。感谢你找到了这个解决方案! - Matt Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接