我有一个visual studio 2010项目,它发布了一个名为myAssembly.ddl
的程序集。
然后,我想从现有的vs 2008项目中引用myAssembly.dll
。如果我尝试加载引用,它旁边会出现一个黄色的感叹号,表明程序集未加载。但是,在此过程中我没有收到任何错误消息。显然,如果我尝试在我的代码中导入命名空间,它就不会编译。
将myAssembly.dll
转换为.net版本3.5没有帮助。
也没有将程序集复制到不同的目录并从那里引用它。
有什么想法吗?
答案 0 :(得分:4)
您使用哪个.NET Framework在Visual Studio 2008中构建解决方案?
它必须是版本3.5才能使用您使用3.5框架编译的myAssembly.dll。 Visual Studio 2008将允许您定位2.0 Framework甚至3.0 Framework。
Visual Studio 2008
项目>属性>应用选项卡 寻找目标框架
答案 1 :(得分:2)
我得到了一个repro。它在Ildasm.exe中可见,2010编译器将元数据标记为v4.0.30319。您也可以使用Corflags.exe查看它。 2008构建系统会为此生成警告,您可以在“输出”窗口中看到它:
警告MSB3246:已解析的文件有 图像不好,没有元数据,或者是 否则无法访问
将目标框架更改为3.5修复了问题,程序集现在将标记为v2.0.50727,即2005和2008中使用的CLR版本。但是,IDE无法智能检测此更改。你必须删除程序集引用,然后将其重新放入。并且黄色感叹号不再存在。
答案 2 :(得分:0)
如果发布的nuget程序包的运行时/体系结构错误,或者根本不是.dotnet dll,就会发生这种情况。