WebDeploy:从部署包中排除特定的 DLL

WebDeploy: Exclude a specific DLL from a deployment package

如何让 Web Deploy 从 Web 部署包中排除特定的 DLL 文件?

此回答 提供了从 Web 应用程序的 bin 文件夹中排除 DB2 数据库驱动程序 IBM.Data.DB2.dll 的建议。否则,您会在 IIS 中收到 BadImageFormatException,因为 Visual Studio 将错误版本的 DLL 与 Web 应用程序打包在一起。我只是 运行 进入这个问题并尝试听从建议。

不幸的是,我无法说服 Web Deploy 忽略这个特定的 DLL。我读了这个博客 post

http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx

并添加了这个

<ItemGroup>
    <ExcludeFromPackageFiles Include="$(OutputPath)IBM.Data.DB2.dll">
        <FromTarget>Project</FromTarget>
    </ExcludeFromPackageFiles>
</ItemGroup>

但没有成功。我仍然可以在 Binaries 文件夹中的 _PublishedWebsites\MyWebApp\bin\IBM.Data.DB2.dll 下找到数据库驱动程序。

一段时间后,我再次尝试解决我的问题,现在可以了。这是解决方案。我将它放在项目定义文件 projectname.csproj.

旁边的名为 projectname.wpp.targets 的文件中
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <ExcludeFromPackageFiles Include="bin\IBM.Data.DB2.dll">
      <FromTarget>Project</FromTarget>
    </ExcludeFromPackageFiles>
  </ItemGroup>

</Project>