因此,我使用了MSBuild,但這是多年前的事情。創建發佈版本
我想創建一個解決方案的Release版本,一旦建成,它會將所有文件複製到變量集文件夾「ReleaseDrop」中並壓縮內容。 在壓縮之前,我想確保它只複製必要的文件(即沒有pdb,沒有sln,沒有csproj,沒有.cs文件(但允許.cshtml)或只有某些目錄並排除目錄中的其他目錄。
我怎麼能做到這一點?
因此,我使用了MSBuild,但這是多年前的事情。創建發佈版本
我想創建一個解決方案的Release版本,一旦建成,它會將所有文件複製到變量集文件夾「ReleaseDrop」中並壓縮內容。 在壓縮之前,我想確保它只複製必要的文件(即沒有pdb,沒有sln,沒有csproj,沒有.cs文件(但允許.cshtml)或只有某些目錄並排除目錄中的其他目錄。
我怎麼能做到這一點?
這應該是一個開始。它指定一堆文件在一份新聞稿中包括,將它們複製到一個目錄和拉鍊他們。對於拉鍊部分我用MSBuild Extension Pack因爲我有它無論如何安裝,但你也可以使用一個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
謝謝!我非常欣賞這一點。 –
請提供更多信息。你想要複製的文件的位置是什麼?他們都在同一個目錄嗎? – stijn
文件的位置應該不重要 - 它們應該可以設置在可以引用的屬性/變量中。但讓我們說,爲了更容易,它是整個項目/ bin文件夾存在的C:\ Projects \ MyProject。然後我想在構建完成之後構建sln,將所有文件複製到另一個文件夾(不包括某些文件夾或文件類型),然後將其壓縮起來 –