我正在使用 MSBuild.Community.Tasks 来帮助完成两件事,即调整版本和压缩文件。我没有结婚,所以如果它产生了我正在寻找的东西,欢迎使用另一种方法。目标是在构建之前增加内部版本号,然后在构建之后压缩一个新的 DLL(带有几个其他文件)。ZIP 文件应根据构建命名。
我快到了,但是,我的 DLL 中的版本号总是比我的 version.txt 文件落后一步(从版本任务自动生成)。这是我在BeforeBuild
目标中的内容:
<Target Name="BeforeBuild" BeforeTargets="PrepareForBuild">
<Message Text=" --=== Before Build ===--"></Message>
<ItemGroup>
<PreviousFiles Include="$(MSBuildProjectDirectory)\BuildPackage\$(AssemblyName).*.zip">
<InProject>false</InProject>
</PreviousFiles>
</ItemGroup>
<Delete Files="@(PreviousFiles)"></Delete>
<Delete Files="$(MSBuildProjectDirectory)\BuildPackage\$(AssemblyName).dll"></Delete>
<Version VersionFile="version.txt" RevisionType="Increment">
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
<Output TaskParameter="Build" PropertyName="Build" />
<Output TaskParameter="Revision" PropertyName="Revision" />
</Version>
</Target>
这会删除以前版本中的所有文件,然后正确递增 version.txt 文件。
接下来,在我的AfterBuild
目标中,我把它放在一起:
<Target Name="AfterBuild" AfterTargets="Build">
<Message Text=" --=== After Build ==--"></Message>
<AssemblyInfo CodeLanguage="CS" OutputFile="AssemblyVersion.cs" AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />
<ItemGroup>
<ProjectOutputFiles Include="bin\$(AssemblyName).dll">
<InProject>false</InProject>
</ProjectOutputFiles>
<ZipFiles Include="$(MSBuildProjectDirectory)\BuildPackage\*.*" Exclude="$(MSBuildProjectDirectory)\BuildPackage\*.zip">
<InProject>false</InProject>
</ZipFiles>
</ItemGroup>
<Copy SourceFiles="@(ProjectOutputFiles)" DestinationFolder="$(MSBuildProjectDirectory)\StorePackage" />
<Zip Files="@(ZipFiles)" WorkingDirectory="$(MSBuildProjectDirectory)\BuildPackage" ZipFileName="$(MSBuildProjectDirectory)\BuildPackage\$(AssemblyName).$(Major)-$(Minor)-$(Build)-$(Revision).zip" ZipLevel="9" />
</Target>
基本上,我正在更新AssemblyInfo.cs
和指定一些文件组。然后我将项目输出复制过来,最后压缩所需的文件。
这一切都很好,除了我的 DLL 版本总是比我的实际修订号晚 1 个修订号 - 即,存储在 version.txt 中的内容以及保存的 .ZIP 文件的名称。
我在这里遗漏了一些明显的东西吗?这就像在构建过程开始之前捕获版本一样。
提前致谢。