我在使用MSBuild ZipDirectory命令时遇到问题,在压缩的输出文件由单个项目构建时和为整个解决方案构建时有所不同。
例如,预期的zip文件如下所示:
A.txt
B.txt
C.txt
作为单独项目构建时,压缩文件看起来像预期的一样。
但是,当解决方案整体构建后,压缩文件如下所示,缺少一些文件:
A.txt
B.txt
导致此类问题的原因是什么?
MSBuild ZipDirectory在构建解决方案和建立个人项目
[我想知道您是否使用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
隐藏文件夹,bin
和obj
文件夹。然后重新启动解决方案,然后再次构建以查看问题是否仍然存在。[B)
使用devenv /safemode启动VS,然后测试问题是否由第三方扩展,程序包引起。[C)
VS安装程序中的do a repair。如果我误解了您的问题,请分享更多详细信息,并随时告诉我们。