引用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

下一篇: Voice Recognition Api