所以,我使用过MSBuild,但这是多年前的事了。
我想为解决方案创建一个Release版本,一旦构建,它会将所有文件复制到变量集文件夹“ReleaseDrop”并压缩内容。 在压缩之前,我想确保它只复制必要的文件(即没有pdb,没有sln,没有csproj,没有.cs文件(但允许.cshtml)或只复制某些目录并排除目录中的其他目录。
我该怎么做?
答案 0 :(得分:1)
这应该是一个开始。它指定要包含在发行版中的一堆文件,将它们复制到目录并将其压缩。对于我使用MSBuild Extension Pack的zip部分,因为我还是安装了它,但你也可以使用7z左右的prtable版本并用Exec任务将其括起来。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<Import Project="$(MSBuildExtensionsPath)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/>
<!--default values for properties if not passed-->
<PropertyGroup>
<ProjectDir Condition="'$(ProjectDir) == ''">C:\Projects\MyProject</ProjectDir>
<ReleaseDrop Condition="'$(ReleaseDrop) == ''">c:\Projects\MyProject\ReleaseDrop</ReleaseDrop>
</PropertyGroup>
<!--build list of files to copy-->
<ItemGroup>
<SourceFiles Include="$(ProjectDir)\bin\*.exe" Exclude="$(ProjectDir)\bin\*test*.exe"/>
<SourceFiles Include="$(ProjectDir)\bin\*.cshtml" />
</ItemGroup>
<!--copy files-->
<Target Name="CopyFiles">
<MakeDir Directories="$(ReleaseDrop)" />
<Copy SourceFiles="@(SourceFiles)" DestinationFolder="$(ReleaseDrop)" />
</Target>
<!--after files are copied, list them then zip them-->
<Target Name="MakeRelease" DependsOnTargets="CopyFiles">
<ItemGroup>
<ZipFiles Include="$(ReleaseDrop)\*.*"/>
</ItemGroup>
<Zip ZipFileName="$(ReleaseDrop)\release.zip" Files="@(ZipFiles)" WorkingDirectory="$(ReleaseDrop)"/>
</Target>
</Project>
可以像
一样调用msbuild <name of project file> /t:MakeRelease /p:ProjectDir=c:\projects