C# 在只有框架2.0和4.0的机器上运行以3.0为目标的.NET应用程序

C# 在只有框架2.0和4.0的机器上运行以3.0为目标的.NET应用程序,c#,.net,C#,.net,有谁能建议一个针对.NET 3.0的应用程序是否能在一台有.NET 2.0和4.0但没有3.0的用户机器上运行?3.0和3.5的安装程序在此特定机器上崩溃。 /编辑 我很好奇,很快就试了试。这实际上取决于你是否 根据3.0/3.5构建你的应用程序,真正使用3.0/3.5特定的东西 实例(Linq)最后。如果你不使用它,那么它当然仍然有效 但是如果您这样做,那么用户将看到Microsoft错误报告对话框 似乎“没有直接针对.NET3.0/3.5的目标”,因为这取决于 关于目标依赖项(项目引用) 但

有谁能建议一个针对.NET 3.0的应用程序是否能在一台有.NET 2.0和4.0但没有3.0的用户机器上运行?3.0和3.5的安装程序在此特定机器上崩溃。

/编辑

我很好奇,很快就试了试。这实际上取决于你是否 根据3.0/3.5构建你的应用程序,真正使用3.0/3.5特定的东西 实例(Linq)最后。如果你不使用它,那么它当然仍然有效

但是如果您这样做,那么用户将看到Microsoft错误报告对话框

似乎“没有直接针对.NET3.0/3.5的目标”,因为这取决于 关于目标依赖项(项目引用)


但最后的答案仍然应该是:“不,因为你永远不知道!”

很可能.Net4拥有你的程序所需的所有东西,有一个选项可以重定向程序集的使用(虽然有点乏味,但确实有)您可以修改应用程序的配置文件,该文件通常在开发时命名为App.config,在部署时命名为ApplicationName.exe.config

在“配置”部分中,对所有应重定向的程序集尝试以下操作:

<runtime>
<generatePublisherEvidence enabled="false"/>
<gcServer enabled="true"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System" publicKeyToken="b77a5c561934e089" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>
</runtime>

4.0框架名义上与为早期版本(1.1及更高版本)编译的程序集向后兼容。CLR中的某些更改仍有可能破坏您的应用程序。有关更多信息,请参阅


故事的寓意:在4.0 CLR上测试你的3.5应用程序,确保它正常工作。

我将重点关注安装程序崩溃的原因!是否有安装程序生成的任何日志文件提供导致崩溃的线索?可能是因为它碰巧没有对3.0程序集的引用。如果它引用了一个3.0程序集,我想说这不是一个简单的方法——也许可以跟踪每个缺失的3.0程序集并自己将其放入GAC。我们找不到安装程序的日志来告诉我们任何事情。安装程序崩溃,因此可能没有机会记录任何内容。我注意到Windows Agent和Windows Agent维护服务无法启动-这可能与安装程序问题有关。因此,你是说应用程序需要.NET 3.0?出于好奇,我刚刚自己快速地玩了一下,并编辑了上面的答案。谢谢-这正是我所想的,但已经完成了能够联合国地球任何官方证实它。我正在使用各种WCF的东西,所以2.0是不够的。