在VS2010中单击发布后,将DLL文件复制到bin目录

Mic*_*rne 2 msbuild publish visual-studio-2010

我在VS2010中有一个Web应用程序,它在VS2010中发布后需要将许多DLL复制到bin目录中.

我已经尝试将以下内容放入我的.csproj文件(位于Web应用程序的根文件夹中)但它似乎不起作用:

<Target Name="AfterBuild">
  <ItemGroup>
    <_CircularDependencies Include="DLLs\Circular\Dependencies\*.dll" />
  </ItemGroup>
  <Copy
    SourceFiles="@(_CircularDependencies)" 
    DestinationFiles="@(_CircularDependencies->'bin\%(Filename)%(Extension)')" 
    SkipUnchangedFiles="true" />
</Target>
Run Code Online (Sandbox Code Playgroud)

对于奖励积分,我有另一组DLL复制后发布复制,但我想在进行调试发布(对于Win32)时使用一组,在进行发布发布时使用不同的集(x86).

谢谢!

Mic*_*rne 5

好的,我已经成功完成了这项工作.感谢上面提供的答案,我已经能够在.csproj文件中添加一些MS Build命令,以根据当前的构建配置将各种文件夹中的相应DLL复制到bin文件夹中.但是因为这些是非托管DLL(即不是.NET),所以我无法创建对它们的正常引用,并且在发布期间无法复制它们.我通过动态地将文件作为"内容"添加到项目中来解决这个问题.

解决方案分为三部分.首先,为.csproj文件顶部附近的文件创建一个项目组(我试图在这里使用通用文件名使其更清晰),条件基于当前的构建配置:

<ItemGroup Condition="'$(Configuration)' == 'Debug'">
  <_UnmanagedDLLs Include="Win32DLLs\*.dll" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Release'">
  <_UnmanagedDLLs Include="x64DLLs\*.dll" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

然后添加另一个项目组以在构建中包含这些DLL(作为内容,而不是引用):

<ItemGroup>
  <Content Include="@(_UnmanagedDLLs->'bin\%(Filename)%(Extension)')" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

最后,在.csproj文件的底部,我在AfterBuild目标上执行复制:

<Target Name="AfterBuild">
  <Copy SourceFiles="@(_UnmanagedDLLs)" DestinationFiles="@(_UnmanagedDLLs->'bin\%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
</Target>
Run Code Online (Sandbox Code Playgroud)

这意味着我可以为我的Windows 32分段框执行调试发布,并为我的x64生产框执行发布发布,同时保持我的bin文件夹不在SVN中.