6

我有一个我在 4.5 中构建的 .NET 应用程序,它引用了一堆在 4.5 中构建的库,这些库本身也引用了 4.5 等。我试图将应用程序分发到的用户组有运行可执行文件时出现问题,因为它们安装了 4.0;特别是,他们得到了 MissingMethodException:

Method not found: 'System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)'.

因为我们可能无法让每个用户升级到 4.5(因为他们都没有他们机器上的管理员权限,这需要为每个用户单独的升级请求),我正在寻找一种简单的方法将项目重建为 4.0 . 这似乎要求我在 4.0 中重建每个库及其引用的库;有没有比逐个浏览每个库并构建 4.0 版本更简单的方法?我在想可能像“在目标框架中重建所有引用的库”的一键式选项或类似的东西。

4

4 回答 4

4

当我使用 Visual Studio 时,我右键单击项目,更改框架,修复引用并重新编译。通常是直截了当。

于 2013-01-14T18:16:05.063 回答
4

如果您对 .Net 4.5 DLL 有依赖关系,那么如果您想成功降级您的项目,您还需要获得这些 .Net 4.0 版本。.Net 项目只能引用与引用程序集相同的 .Net 版本的 .Net DLL。

最简单的方法是使用NuGet之类的东西来管理您的依赖项。请注意,当您在 VS 中更改项目的目标框架版本时,您需要使用 NuGet 卸载并重新安装依赖项,因为当您更改目标框架版本时,NuGet 不会自动为您执行此操作。

当然,如果所有依赖项都是您自己的代码,并且您没有通过 NuGet 等依赖项管理系统发布它,那么您还需要将所有其他代码降级到 .Net 4.0

于 2013-01-14T18:52:15.103 回答
1

请查看此 MSDN 页面以正确地将您的项目切换到较低的目标框架,而不会出现问题!对于版本而言,它有点过时,但过程与描述的相同!

于 2013-01-14T18:18:20.280 回答
0

这是基于我的经验。我最初在.net framework 4.5 中创建了一个应用程序,但我想在.net framework 4.0 中转换它。我创建了最初创建 4.0 的新项目,然后我复制并粘贴了我以前的应用程序的所有表单和控件,它可以工作。框架 4.5 使用 Aero2 而 4.0 是 Aero...祝你好运 :)

于 2013-07-19T06:56:24.257 回答