【问题标题】:Why does build fail in Release mode?为什么在发布模式下构建失败?
【发布时间】:2023-12-18 22:01:01
【问题描述】:

我在 VS2017 中有一个 C# MVC Web 应用程序,它引用了两个库项目,Crd.Core 和 Crd.Data。这两个库都引用了我存储在解决方案级别文件夹中的相同第三方 dll。在调试中一切正常。在 Release Crd.Core 构建正常,但 Crd.Data 失败并出现两个错误:

Unable to generate a temporary class (result=1).    

CS0012 The type 'Consilium.TASKMobile.Common.Messages.UserType' is defined in an assembly that is not referenced. You must add a reference to assembly 'Consilium.TASKMobile.Common.Messages, Version=6.0.60037.0, Culture=neutral, PublicKeyToken=null'.

这个程序集肯定被引用了。两个项目从相同的中性位置引用完全相同的文件。我已经尝试移动引用的文件,并在重新添加它们之前删除引用。

两个项目的以下内容相同:

  • 配置(任何 CPU)
  • 目标框架 (4.6.1)
  • csproj 文件中的属性组
  • 对 csproj 文件中第三方 DLL 的引用
  • 引用的属性(相同版本,复制本地 = True 等)

基本上我的两个项目在我能想到的检查的各个方面都是相同的,但是其中一个项目未能在发布模式下构建,因此某处肯定有一些不同的地方。我错过了什么?我还能检查什么?

【问题讨论】:

  • 请尝试确保您已添加对“Consilium.TASKMobile.Common.Messages” dll(版本:6.0.60037.0)的引用。也许您可以从这两个链接中获得帮助:compiler error CS0012Build error
  • 感谢 Lance,该 dll 确实被引用了(否则它不会在调试中构建),并且它的引用方式与我的第二个项目的引用方式完全相同,该项目在调试和发布中都进行了编译。我在其中任何一个链接中都找不到任何适用或有帮助的内容。

标签: build msbuild visual-studio-2017 release sgen


【解决方案1】:

所以我花了相当多的时间在这上面,却一无所获,所以我想休息一下再回来。两周后,我准备为我的第一个用户测试部署一个发布版本,瞧,没有错误!

向最终在这里寻找解决方案的任何人道歉 - 我不知道是什么原因导致它或为什么问题消失了,我只想说 dll 或我对它们的引用都没有改变。

【讨论】: