win*_*006 16 .net c# .net-4.0 .net-2.0
我们有一个myapp.exe用.NET 2.0 Framework(VS2005)构建的C#DLL(让我们称它),我们发现我们的应用程序不适用于只安装了.NET 4.0或更高版本的机器.为了让我们的应用程序在.NET 4.0上运行,我myapp.exe.config通过以下文章添加了以下几行:安装.NET Framework V4.0和运行.NET 2.0/3.0/3.5/3.5Sp1应用程序
<startup>
<supportedRuntime version="v4.0.30319"/>
</startup>
Run Code Online (Sandbox Code Playgroud)
它正在发挥作用.
然后我看到这篇文章还提到了以下内容(特别是第二段):
现在,我知道您不能只使用3.5 Service Pack 1应用程序并在V4.0 CLR上运行它.它需要V2.0 CLR或使用标记进行重新配置,以便使应用程序在V4.0 CLR上运行,并且弯曲可能是您不想做的事情.
我没有意识到的是,安装.NET 4.0不会安装2.0/3.0/3.5/3.5Sp1应用程序所需的位.它只会安装V4.0 CLR和V4.0程序集,而不是另外安装相当于.NET Framework V3.5 Sp1的程序.因此,您需要自己安装(例如).NET Framework V3.5 Sp1和.NET 4.0
从我的测试来看,这意味着我可以在.NET 4.0上使用.NET 4.0框架(4.0汇编/库)运行我的2.0 C#应用程序,这与文章所说的相矛盾.
或者我在这里遗漏了什么?如果有人能澄清这一点可能会有所帮助.微软并没有真正明确这一点.
Oku*_*ott 10
我引述:
".NET Framework 4向后兼容使用.NET Framework 1.1,2.0,3.0和3.5构建的应用程序.换句话说,使用以前版本的.NET Framework构建的应用程序和组件将在.NET Framework 4."
你对App.config文件有正确的想法,但你真的限制自己的一行.
我可以建议更自由地使用supportedRuntime线吗?
例如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<!--
<supportedRuntime version="v3.5"/> "The .NET Framework version 3.0 and 3.5 use version 2.0.50727 of the CLR."
-->
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.1,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.1" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.2,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
为什么被supportedRuntime version="v3.5"评论出来?请记住,此配置可识别应用程序与哪些版本的公共语言运行时(CLR)兼容.没有3.0或3.5版本的CLR.请参阅.NET Framework版本和依赖项
从我的测试来看,这意味着我可以在.NET 4.0上使用.NET 4.0框架(4.0汇编/库)运行我的2.0 C#应用程序,这与文章所说的相矛盾.
您可以使用.NET 4程序集在.NET 4上运行应用程序.但是,运行时行为可能会略有变化,因为您不会使用与开发时相同的运行时和框架.我怀疑这篇文章试图建议你不会通过安装4.0来获得完全相同的行为,但是,正如你所见,它应该可行.
这样做可能很好,但如果这将是一个标准的部署选项,我会建议您对应用程序进行全面测试.
只是为了更简洁一点。在 App.config 中,您显示了对 CLR 的支持。从 .Net v2 开始,只有2 个版本的 CLR。因此,以下内容将为您提供对 .Net v2 及后续版本的支持。确保包含与项目一起构建的 exe.config 文件,否则您可能仍会看到要求安装 .Net 的弹出窗口。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
要支持 .Net v2 到 v3.5,请使用:
<supportedRuntime version="v2.0.50727"/>
Run Code Online (Sandbox Code Playgroud)
要支持 .Net v4.0 到 4.6,请使用:
<supportedRuntime version="v4.0"/>
Run Code Online (Sandbox Code Playgroud)
可以找到有关配置应用程序以支持 .NET Framework 的更多信息
| 归档时间: |
|
| 查看次数: |
24694 次 |
| 最近记录: |