引用DLL文件不会复制到bin,部署项目会导致错误
我们在我们的Web应用程序项目中引用了几个外部DLL文件。 我们有一个部署项目用于在托管服务器上进行安装。 当我们使用.NET 3.5和Visual Studio 2008时,DLL文件被复制到bin文件夹中。 由于我们已升级到.NET 4和Visual Studio 2010,因此不再发生这种情况,并且由于无法找到引用,因此我们正在收到服务器错误。
CopyLocal设置为true,并且我无法在web.config中找到任何暗示此设置在别处的任何内容。
Visual Studio 2010中存在一个错误。默认情况下,解决方案文件中的XML如下所示:
<Reference Include="DevExpress.SpellChecker.v11.1.Core,
Version=11.1.5.0,
Culture=neutral,
PublicKeyToken=b88d1754d700e49a,
processorArchitecture=MSIL">
<HintPath>..ReferencesDevExpress.SpellChecker.v11.1.Core.dll</HintPath>
</Reference>
尽管MSBuild期待如下,以便该DLL文件将包含在部署中:
<Reference Include="DevExpress.SpellChecker.v11.1.Core,
Version=11.1.5.0,
Culture=neutral,
PublicKeyToken=b88d1754d700e49a,
processorArchitecture=MSIL">
<HintPath>..ReferencesDevExpress.SpellChecker.v11.1.Core.dll</HintPath>
<Private>True</Private>
</Reference>
诀窍是将Copy Local
设置为False
,保存该项目,然后将其重置为True
- 再次保存。 这包括MSBuild尊重的正确的私人节点。
看起来Visual Studio 2010中不包含专用节点( Copy Local
)的默认值为True
,而MSBuild将缺少的节点读取为False
。
我遇到了同样的问题,而不是添加一个“BeforeBuild”步骤,我创建了一个简单的测试
[TestMethod]
public void ReferenceAssemblyThatDoesNotCopyToBuildFolder()
{
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler referenceThisButDoNotUseIt = null;
}
并修复了错误类型'Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler ...'无法解析
我的部署项目发生了一些奇怪的事情。 当我看到它没有检测到依赖关系时,我删除了主输出并重新添加它。
依赖关系现在显示出来,并在安装时放置在bin文件夹中。
链接地址: http://www.djcxy.com/p/64313.html上一篇: Reference DLL file not copying to bin with deployment project causing error