我决定使用MSBuild Extension的Zip任务在每次构建时压缩我的一些源代码.
但是,这不起作用:
<UsingTask TaskName="MSBuild.ExtensionPack.Compression.Zip" AssemblyFile="MSBuild.ExtensionPack.dll" />
<Target Name="AfterBuild">
<CallTarget Targets="ZipSourceFiles" />
</Target>
<Target Name="ZipSourceFiles" Condition="'$(ConfigTransform)'=='ImRunningOnTheServer'">
<MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressFiles="c:\source.txt" ZipFileName="C:\target.zip"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
找不到"MSBuild.ExtensionPack.Compression.Zip"任务.请检查以下内容:1.)项目文件中任务的名称与任务类的名称相同.2.)任务类是"public"并实现Microsoft.Build.Framework.ITask接口.3.)在项目文件中或位于"c:\ Windows\Microsoft.NET\Framework\v4.0.30319"目录中的*.tasks文件中正确声明了任务.
我不知道导致这个错误的原因是什么?任何的想法?
Chr*_*cht 34
MSBuild社区任务的示例:
<Import Project="lib\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<Target Name="Zip">
<CreateItem Include="YourSourceFolder\*.*" >
<Output ItemName="ZipFiles" TaskParameter="Include"/>
</CreateItem>
<Zip ZipFileName="YourZipFile.zip" WorkingDirectory="YourSourceFolder" Files="@(ZipFiles)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
如果您需要更多示例,请参阅我的一个项目中的完整工作MSBuild文件.
这是MSBuild社区任务的替代方案.如果您使用的是.net 4.5.1,则可以在UsingTask中嵌入System.IO.Compression函数.此示例使用ZipFile.CreateFromDirectory.
<Target Name="Build">
<ZipDir
ZipFileName="MyZipFileName.zip"
DirectoryName="MyDirectory"
/>
</Target>
<UsingTask TaskName="ZipDir" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll">
<ParameterGroup>
<ZipFileName ParameterType="System.String" Required="true" />
<DirectoryName ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.IO.Compression.FileSystem" />
<Using Namespace="System.IO.Compression" />
<Code Type="Fragment" Language="cs"><![CDATA[
try
{
Log.LogMessage(string.Format("Zipping Directory {0} to {1}", DirectoryName, ZipFileName));
ZipFile.CreateFromDirectory( DirectoryName, ZipFileName );
return true;
}
catch(Exception ex)
{
Log.LogErrorFromException(ex);
return false;
}
]]></Code>
</Task>
</UsingTask>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25920 次 |
| 最近记录: |