繁体   English   中英

如何使ASP.NET网站使用正确的程序集(文件引用而不是路径/ GAC)

[英]How to get an ASP.NET WebSite to use the right assembly (File reference instead of path/GAC)

我最近开始使用Jenkins简化应用程序开发。 我有一个Asp.net网站,正在尝试使用它进行部署。

有关构建的详细信息:

  • 使用Jenkins从Visual Source Safe中检索了该项目。
  • 然后使用msbuild进行编译
  • 构建完成后,将其部署到测试服务器。

编译运行良好,没有错误,没有警告。

当我将Web应用程序从PrecompiledWeb文件夹复制到测试服务器时,执行某些操作时应用程序崩溃。 我得到的异常是以下内容:

 Exception type: FileLoadException Exception message: Could not load file or assembly 'Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

但是,如果我从网站的文件夹中复制Web应用程序,则一切正常。

注意:所有非Microsoft程序集都存储在解决方案级别的名为“程序集”的文件夹中。 项目中的所有引用均指向该程序集。

有没有一种方法可以找到冲突的根源,因此可以使用PrecompiledWeb文件夹进行部署。

编辑:似乎我的项目中引用了多个程序集,但我不知道如何只得到一个。 我在对象浏览器中签入,选择“我的解决方案”,然后得到以下信息 对象浏览器中的两个程序集

WebSite项目似乎是引起麻烦的项目(当我从解决方案中将其删除时,对象浏览器中仅显示正确的程序集)。

以XML格式打开项目文件,然后找到有问题的参考。 对其进行更改,使其没有强的程序集名称,例如,

<Reference Include="Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken={SOME-KEY}, processorArchitecture=MSIL" />

...以一个没有限定名称的名称和一个HintPath指向代码库中已检入该程序集的位置,

<Reference Include="Oracle.DataAccess">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\Oracle\Oracle.DataAccess.dll</HintPath>
</Reference>

(当然,我只是在详细说明这些,没有Oracle)

请注意,当前的Referenc是否似乎已经正确设置了HintPath并不重要,如果它具有强的程序集名称,则GAC中的任何内容都将具有优先权。

在Visual Studio项目中,当您在“引用”中选择该DLL并查看其属性时,“复制本地”是否设置为true? 如果不是,则DLL可能不会复制到输出文件夹中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM