构建解决方案和构建单个项目时 MSBuild ZipDirectory 输出不同

MSBuild ZipDirectory Output Different when Building Solution and Building Individual Project

我在使用 MSBuild ZipDirectory 命令时遇到问题,其中压缩输出文件在由单个项目构建时和为整个解决方案构建时不同。

例如, 预期的 zip 文件如下所示:

A.txt

B.txt

C.txt

作为单个项目构建时,压缩文件看起来符合预期。

但是, 当解决方案作为一个整体构建时, 压缩文件如下所示,缺少一些文件:

A.txt

B.txt

是什么导致了这个问题??

MSBuild ZipDirectory Output Different when Building Solution and Building Individual Project

不知您是否使用ZipDirectory task来压缩项目中的某些文件。我已经在同一解决方案的不同项目中测试了该命令,并没有遇到与您所说的相同的问题。所以请检查这个:

1)如果只是压缩项目中的一些内容文件,尝试Solution Explorer中新建一个文件夹称为 resource 然后将任何要压缩的文件放入其中。并记住将此目标设置为在构建过程后执行。

<Target Name="ZipOutputPath" AfterTargets="Build">
    <ZipDirectory
        SourceDirectory="$(MSBuildProjectDirectory)\resource"
        DestinationFile="$(MSBuildProjectDirectory)\output.zip" />
  </Target>

2)如果要压缩输出文件夹的文件,请确保您已将特定文件的Copy to Output Directory设置为Copy if newer.

注意 :请检查是否有一些额外的目标会删除一些文件,如C.txt或者有一些额外的条件来限制这个。

Build Solution 意味着它可以同时构建所有项目所以我想知道是否有一些额外的项目有一些配置会导致第一个项目出现这种行为。

3) 除了,你也可以尝试zip task来实现:

<Target Name="zipfiles" AfterTargets = "Build">
 <ItemGroup>
    <ZipFiles Include="xxxxx\A.txt" />
    <ZipFiles Include="xxxxx\B.txt" />
    <ZipFiles Include="xxxxx\C.txt" />
  </ItemGroup>
  <Zip OutputFilename="$(OutputPath)Project.zip" Files="@(ZipFiles)" />
 </Target>

此外,如果所有这些都没有帮助,则可能是您的 VS 环境有问题。因此,您可以按照以下步骤操作:

A)关闭VS实例,删除解决方案路径下的.vs隐藏文件夹,binobj文件夹。然后重新启动您的解决方案,然后再次构建以查看问题是否仍然存在。

B)使用devenv /safemode启动VS,然后测试是否是第三方扩展包引起的问题。

C) do a repair 在 VS 安装程序中。

如果我误解了您的问题,请分享更详细的信息并随时告诉我们。