我有一个自定义的MSBuild任务,它接受一组JavaScript文件,缩小它们并输出它们,扩展名为.min.js。当我通过Visual Studio进行正常构建时,它完美地工作,并且.min.js文件输出到与原始文件相同的目录。当我尝试使用Visual Studio中的“发布”功能进行部署时,只有原始.js文件才能进入发布目录....如何将我的任务输出计为“内容”,以便它将结束在已发布的文件夹中?
编辑: 我能够通过在我的任务中添加Output标签然后在其周围创建一个ItemGroup来解决这个问题:
<Target Name="AfterBuild">
<ItemGroup>
<JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" />
</ItemGroup>
<JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts">
<Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" />
</JsCompress>
<ItemGroup>
<Content Include="@(CompressedFiles)" />
</ItemGroup>
</Target>
答案 0 :(得分:2)
构建和发布是单独的目标。将目标添加到项目中,将缩小抽象到其自己的目标,然后使AfterBuild和Publish目标依赖于缩小目标。像这样:
<Target Name="AfterBuild" DependsOnTargets="Build;Minify">
</Target>
<Target Name="Publish" DependsOnTargets="Build;Minify">
</Target>
<Target Name="Minify" DependsOnTargets="Build">
<ItemGroup>
<JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" />
</ItemGroup>
<JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts">
<Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" />
</JsCompress>
<ItemGroup>
<Content Include="@(CompressedFiles)" />
</ItemGroup>
</Target>
这个片段当然意味着您必须拥有构建目标,这可能与否。因此,您可能需要修改它。希望这有帮助!
答案 1 :(得分:0)
更改文件属性。检查这些文件的Build Action和Copy to Output Directory属性。