我有一个引用第三方程序集的Web应用程序项目,后者又使用了一些在运行时需要查找的本机dll。 因此,我想将这些dll添加到项目的bin文件夹中,这样就可以找到它们。
但是,如果我在/ bin /中将文件添加到项目中,请选择“复制到输出”,文件将被编译并发布到/ bin / bin中。将它们添加到根文件夹是有效的,但几乎不是正确的解决方案。
将它们添加到构建目标“AfterBuild”在发布时无效(例如“构建部署包”)
在通过TFS构建解决方案时,它也必须工作,其中调用了MSBuild目标_CopyWebApplicationLegacy。
答案 0 :(得分:9)
解决方案是我已经尝试过的事情的组合:
现在,文件会在发布时复制到bin文件夹,即使在TFS上自动构建时也是如此。
需要它的组件是GdPicture,它在运行时使用了几个本机DLL。
答案 1 :(得分:3)
在您的解决方案或工作区中都有一个 lib 文件夹,可以将您的第三方dll放入其中。然后,您将从项目中添加对此位置的引用,并确保此位置受源代码管理。
您还可以使用NuGet为您打包,它会自动使用解决方案级别的包文件夹。
答案 2 :(得分:0)
基于这篇文章http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx。可以将msbuild目标定义为main(最新的解决方案构建顺序)项目文件,该文件将捕获bin文件夹的所有文件。喜欢这个
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="$(OutDir)\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>$(OutDir)\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
在关闭根项目元素之前放置它。