使用 MSBuild 构建 ASP.NET Web 表单应用程序时出现错误 CS0433

问题描述 投票:0回答:2

我正在开发 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 临时文件,但错误仍然存在。有人对如何解决这个问题有任何建议吗?

任何帮助将不胜感激!

asp.net .net visual-studio msbuild
2个回答
0
投票

从你的错误消息来看,

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也有类似的问题,你可以按照它的方法尝试一下,看看是否适合你。

希望这些建议能给您一些想法。不过,我不确定这是否能完全解决您的问题。


0
投票

我时不时地遇到同样的问题,有时清理解决方案和重建解决了问题,有时我必须删除 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 中并重新加载页面。

© www.soinside.com 2019 - 2024. All rights reserved.