1

我有一个引用第三方 DLL 的 .Net 4.0 应用程序,它显然不支持 4.0。在配置文件中使用 useLegacyV2RuntimeActivationPolicy="true" 可以使其在本地运行时工作,但在 IIS 7.5 中在我们的服务器上运行时不起作用。

第三方软件来自http://crystal-decisions-inc.software.informer.com/,DLL的:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.ReportSource
  • CrystalDecisions.Shared

本地计算机和 Web 服务器都安装了相同的 Crystal Reports 运行时 CRRuntime_32bit_13_0_5.msi。

我的本地应用程序正在使用一个测试项目运行,该项目是一个 Windows 窗体应用程序。在 app.config 中,包含以下内容时它可以工作:

<configuration>
  ...
  <startup useLegacyV2RuntimeActivationPolicy="true" >
  </startup>
</configuration>

如果不包括在内,本地代码会导致此异常:

“无法加载文件或程序集 'C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll' 或其依赖项之一。该系统找不到指定的文件。”

当我将相同的 <startup> 标记添加到网站的 web.config 时,它是否存在似乎没有任何区别。当那行代码被命中时,代码就死了;它不会抛出任何托管异常。

谷歌搜索帮助,所有页面基本上都声明添加配置设置为他们修复了它,通常引用这个或一个轻微的变体:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

但这对我的应用程序不起作用。由于我无法从 Web 应用程序中获得实际错误,因此我不知道下一步该去哪里,感谢您的帮助。

4

1 回答 1

1

既然还没有人回答,我就扔我的五分钱。

useLegacyV2RuntimeActivationPolicy 允许包含 .NET 2.0 之前的“怪异”(通常涉及混合程序集)。但这样做是以牺牲并行执行为代价的。

我认为您没有找到正确的输入位置。不要将 Web.Config 与 App.Config 文件混淆。Web.Config 服务于另一个完全不同的目的。我假设您需要找到可执行文件的 App.Config 文件。

(IIS 是否会对此设置做出积极响应,我不知道。)

于 2013-06-25T18:27:00.483 回答