编译.NET 7.0 C++/CLI DLL遇C5275等错误求解析
问题:C++构建.NET 7.0程序集DLL时的编译错误及Facade Assembly疑问
我尝试用C++代码构建适用于.NET 7.0的程序集DLL时,编译启动前就报出以下错误(注:按错误代码判断这应该是警告而非错误):
1>C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.20\ref\net7.0\mscorlib.dll(1,1): error C5275: facade assembly 'mscorlib.dll' being imported under '/clr'; missing option '/clr:netcore'? 1>C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.20\ref\net7.0\Microsoft.CSharp.dll : fatal error C1001: Internal compiler error.
推测第二个错误由第一个错误引发。该DLL使用托管类封装原生代码,在.NET Framework(最高4.7.2)下运行正常,仅引用System.Drawing.Common.dll,且我并未显式引入mscorlib.dll。请问“facade assembly”指的是什么?
更新:
发现一个线索:尽管项目设置了clr:netcore属性,但单个.cpp文件仍使用标准clr。另外IDE不允许指定-clr:netcore,添加为附加选项也无效,尚未找到能直接在项目文件中生效的语法。
更新2:
可通过将公共语言运行时支持字段手动改为NetCore(忽略可选选项),强制以.NET而非.NET Framework进行编译。
内容的提问来源于stack exchange,提问作者Yves Daoust
相关产品推荐
相关产品推荐

