Mic*_*out 4 svn asp.net msbuild visual-studio-2010 web-deployment
我在每次构建后使用_bin_deployableAssemblies文件夹将ASP.NET MVC程序集复制到bin文件夹.不幸的是,MSBuild任务还复制了隐藏的.svn文件夹.
我想在项目级别解决这个问题,所以我在.csproj文件中RemoveDir
向AfterBuild
目标添加了一个任务,该文件适用于普通版本.
<RemoveDir Directories="@(OutDir).svn" />
Run Code Online (Sandbox Code Playgroud)
但是,当我发布网站时,它似乎不起作用.发布后,.svn文件夹将复制到发布向导的目标文件夹中.奇怪的是,尽管有RemoveDir
任务,它也会在项目的/ bin文件夹中结束!
在目标文件中C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
,动态创建项目组以包含文件夹_bin_deployableAssemblies中的所有文件:
<CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*"
Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')">
<Output ItemName="_binDeployableAssemblies" TaskParameter="Include"/>
</CreateItem>
Run Code Online (Sandbox Code Playgroud)
使用目标中的Message
任务,AfterBuild
我可以看到此项目组包含.svn文件夹中的所有文件.
所以我尝试了以下技巧来调整.AfterBuild目标中的项目组:
<ItemGroup>
<_binDeployableAssemblies Remove="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\.svn\**\*.*" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
如果我在使用Message
任务之后打印文件列表,我可以看到它不再包含.svn文件夹中的文件.但是,在构建或发布时,.svn文件仍会复制到输出文件夹中!
似乎Publish命令首先进行常规构建,此时我们可以使用AfterBuild目标删除文件.但随后它将文件复制到临时位置(在/ obj文件夹中)以便发布它们.在这个阶段,似乎它拷贝一切从_bin_deployableAssemblies到仓再次才把拷贝箱(及其他项目文件)的临时位置.这似乎发生在 AfterBuild 之后.
因此,技巧可能是在将项目文件复制到临时文件夹之前挂钩到某个进程.或者之后,不仅需要清除临时文件夹,还需要第二次清除原始bin文件夹.这可以通过钩入许多DependsOn目标中的一个来实现.
如果没有合适的目标来执行此操作,那么从某个中间项组中删除文件可能是一种解决方案,因此它们实际上从未被复制或发布.
由于缺乏对发布流程的理解,我无法实现这些可能的修复.
如何防止文件被复制或复制后删除文件?如何为常规版本和发布命令执行此操作?
将其添加到.csproj文件(或{projectName}.wpp.targets
文件):
<PropertyGroup>
<OnAfterCopyAllFilesToSingleFolderForPackage>
__RemoveSvnFromPackageTemp
</OnAfterCopyAllFilesToSingleFolderForPackage>
</PropertyGroup>
<Target Name="__RemoveSvnFromBin" AfterTargets="_CopyBinDeployableAssemblies">
<Message Text="Removing .SVN from BIN" Importance="normal"/>
<RemoveDir Directories="$(OutDir).svn" />
</Target>
<Target Name="__RemoveSvnFromPackageTemp">
<Message Text="Removing .SVN from PackageTempDir" Importance="normal"/>
<RemoveDir Directories="$(_PackageTempDir)\bin\.svn" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这适用于构建,打包和发布!
归档时间: |
|
查看次数: |
907 次 |
最近记录: |