我正在开发 ASP.NET Web 窗体应用程序 (.NET Framework 4.7.2),并且我正在尝试使用 MSBuild 构建解决方案。
msbuild Project.sln /p:Configuration=Release /p:Platform="Any CPU"
但是,我收到以下错误:
错误CS0433:类型“includes_controls_GridFilter”存在于两者中 'App_Web_5ozmheie,版本=0.0.0.0,文化=中性, PublicKeyToken=null' 和 'App_Web_e2c40wid,版本=0.0.0.0, Culture=neutral, PublicKeyToken=null' [D:\Source\Repos\X\X.metaproj]
奇怪的是,该解决方案在 Visual Studio 中构建得很好,所以我不确定是什么导致了这个错误。
我尝试检查项目引用并清除 ASP.NET 临时文件,但错误仍然存在。有人对如何解决这个问题有任何建议吗?
任何帮助将不胜感激!
从你的错误消息来看,
includes_controls_GridFilter
类型似乎都在 App_Web_5ozmheie
和 App_Web_e2c40wid
文件中。它无法区分引用的是哪一个。
基于编译器错误CS0433,我创建了2个具有相同命名空间(TypeBindConflicts)和相同类名(class1)的类文件进行测试,然后在另一个项目中引用class1。当我使用 msbuild 命令时,我重现了相同的错误 CS0433。当我在 VS2022 中构建时,生成了相同的错误。
Class1.cs
namespace TypeBindConflicts
{
public class Class1
{
}
}
所以我认为如果从同一个命名空间引用同名的类型,在msbuild和VS中都会报错。但我认为 VS 和 MSBuild 中项目的构建方式有所不同。 Visual Studio 不执行 MSBuild.exe,而是托管构建引擎本身。
您可以检查以下建议:
1 对于此错误 CS0433,您检查
includes_controls_GridFilter
文件和 App_Web_5ozmheie
文件中是否存在相同的命名空间或相同名称 App_Web_e2c40wid
。尝试将类型 includes_controls_GridFilter
重命名为其他名称。
2
The strange thing is that the solution builds fine in Visual Studio but not with msubild
。只是一个想法,可能与缓存有关。
尝试删除 bin 和 obj 文件夹,然后进行清理/重建。
3 这个ticket也有类似的问题,你可以按照它的方法尝试一下,看看是否适合你。
希望这些建议能给您一些想法。不过,我不确定这是否能完全解决您的问题。
我时不时地遇到同样的问题,有时清理解决方案和重建解决了问题,有时我必须删除 C:\Windows\Microsoft.NET\Framework64 4.0.30319\Temporary ASP.NET Files 中的文件夹根目录工作并且有时这些都不起作用,我必须重新创建解决方案才能再次运行代码。
显然 Visual Studio 中存在一个错误,因为在某些代码更改后该消息突然出现(不会创建消息声明的特定类型的副本)。
目前我使用的是 Visual Studio 2022 版本 17.8.6,但自 VS 2019 及更早版本以来,此消息不时出现。我的经验是,当 VS 运行代码时,该消息会在代码更改后出现,而不是在没有进行调试时的代码更改后出现,最常见的是在 .cs 部分更改后出现该消息,但并非总是如此,最后一次我只更改在 JavaScript 中并重新加载页面。