大家好,
自从我开始使用C#编码以来,这一直让我感到困惑。我的目标是创建一个程序集,可以在用户的最新.NET框架上运行,无论用户使用的是哪个版本。我不想要求安装.NET 4,但如果用户有它,我想使用它,更重要的是,如果用户只有.NET 4而没有其他版本,它仍然能够正常工作。我开始怀疑这甚至是不可能的。
我真的不理解当我在Visual Studio中更改“目标框架”时选择了什么。那是指“与此版本及以上版本兼容”还是“仅与此版本兼容”?到目前为止,它似乎是后者;我的虚拟机测试显示,针对.NET 4的程序集在没有.NET 4的情况下失败,而针对.NET 3.5的程序集在没有.NET 3.5的情况下失败。难道没有办法设置它以实现最大的兼容性吗?
更新:为了澄清,我有一个针对.NET 2的程序。这里的帖子似乎表明它应该在.NET 4上运行。但是,在只有.NET 4而没有它之前的环境中,它无法加载。
更新2:好吧,我弄清楚了,但比这里的帖子要复杂得多。我正在打开一个不同的问题来讨论细节,但简短版本是,如果你想在.NET 4上运行非.NET 4程序集,需要在其中添加一个<supportedRuntime version="v4.0" />
的 app.config 文件。没有它,它们将无法加载。