Msbuild 创建发布下拉列表

Msbuild 创建发布下拉列表,msbuild,Msbuild,所以,我使用了MSBuild,但这是几年前的事了 我想为解决方案创建一个发布版本,一旦构建,它会将所有文件复制到一个变量集文件夹“ReleaseDrop”中,并压缩内容。 在压缩之前,我希望确保它只复制必要的文件(即没有pdb、没有sln、没有csproj、没有.cs文件(但允许使用.cshtml)或只复制某些目录,并排除目录中的其他目录 我该怎么做呢?这应该是一个开始。它指定了要包含在发行版中的一组文件,将它们复制到一个目录并将其压缩。对于我安装后使用的zip部分,您也可以使用7z左右的可压缩

所以,我使用了MSBuild,但这是几年前的事了

我想为解决方案创建一个发布版本,一旦构建,它会将所有文件复制到一个变量集文件夹“ReleaseDrop”中,并压缩内容。 在压缩之前,我希望确保它只复制必要的文件(即没有pdb、没有sln、没有csproj、没有.cs文件(但允许使用.cshtml)或只复制某些目录,并排除目录中的其他目录


我该怎么做呢?

这应该是一个开始。它指定了要包含在发行版中的一组文件,将它们复制到一个目录并将其压缩。对于我安装后使用的zip部分,您也可以使用7z左右的可压缩版本,并将其与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>

C:\Projects\MyProject
c:\Projects\MyProject\ReleaseDrop
可以像这样调用

msbuild <name of project file> /t:MakeRelease /p:ProjectDir=c:\projects
msbuild/t:MakeRelease/p:ProjectDir=c:\projects

请提供更多信息。要复制的文件的位置是什么?它们是否都在同一个目录中?文件的位置应该无关紧要-它们可能应该设置在可以引用的属性/变量中。但是,为了方便起见,整个project/bin文件夹所在的位置是C:\Projects\MyProjects、 然后我想构建那个sln,成功构建后,将所有文件复制到另一个文件夹(不包括某些文件夹或文件类型),然后将其压缩