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

如何使ASP.NET网站使用正确的程序集(文件引用而不是path/GAC),.net,msbuild,reference,jenkins,.net,Msbuild,Reference,Jenkins,我最近开始使用Jenkins来简化应用程序开发。我有一个Asp.net网站,我正试图使用它进行部署 有关生成的详细信息: 该项目使用Jenkins从Visual Source Safe中检索 然后使用msbuild编译 构建完成后,将其部署到测试服务器 编译运行正常,没有错误,没有警告 当我将web应用程序从预编译web文件夹复制到测试服务器时,当我执行某些操作时,应用程序崩溃。我得到的例外情况如下: 但是,如果我从网站的文件夹中复制web应用程序,则一切正常 注意:所有非Microsoft

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

有关生成的详细信息:

  • 该项目使用Jenkins从Visual Source Safe中检索
  • 然后使用msbuild编译
  • 构建完成后,将其部署到测试服务器
编译运行正常,没有错误,没有警告

当我将web应用程序从预编译web文件夹复制到测试服务器时,当我执行某些操作时,应用程序崩溃。我得到的例外情况如下:

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

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

是否有一种方法可以找到冲突的来源,以便使用预编译Web文件夹进行部署

编辑: 似乎我的项目中引用了多个程序集,但我不知道如何只获取一个。我在对象浏览器中进行了检查,选择了我的解决方案,得到了以下结果


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

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

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

以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\Oracle.DataAccess.dll
(当然,我只是在编造这些细节,没有Oracle)


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

以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\Oracle.DataAccess.dll
(当然,我只是在编造这些细节,没有Oracle)


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

这是一个网站项目,因此我不能选择在引用上复制本地。事实上,添加对网站的引用只会将其复制到bin中。当我在属性页中查看项目时,没有添加引用(我猜可能是它试图使用GAC),这是一个网站项目,因此我不能选择在引用上复制本地。事实上,添加对网站的引用只会将其复制到bin中。当我在属性页中查看该项目时,没有在那里添加引用(我的猜测是它可能试图使用GAC)。。。我不能在网站上这么做,你没有一个项目文件可以打开。。。我不能在网站上这样做,你没有一个项目文件可以作为XML打开