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).
谢谢!
好的,我已经成功完成了这项工作.感谢上面提供的答案,我已经能够在.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中.
| 归档时间: |
|
| 查看次数: |
7155 次 |
| 最近记录: |