检查构建诉讼前一个文件出来(TFS)
-
23-08-2019 - |
题
我添加了一个ASP.NET Web控件(服务器控件)项目,运行jsmin.exe上一组Javascript文件构建预执行。这些输出文件是源控制树的一部分,并且被嵌入到所述组件。
问题是,当预建立运行时,jsmin不能写入文件,因为它是只读的。是否有可能手之前检查出该文件?还是我被迫在命令行设置文件的属性。
任何改进的解决方案的问题是受欢迎的。
<强>更新强> 与穆罕默德的答案的一个小问题 - 你需要预先VS目录:
"$(DevEnvDir)tf" checkout /lock:none "$(ProjectDir)myfile"
解决方案
如果您正在使用的Team Foundation Server,你可以使用的团队基础命令行实用程序(tf.exe)检查出预构建过程中的文件(S),然后生成后在检查它们回。如果你使用别的东西源头控制,你可以检查他们是否有像tf.exe一个命令行工具。
其他提示
如果你不想来检查文件的版本(你通常不会对这样的事情),那么我会干脆在其上运行jsmin之前设置的.js文件的属性的一部分。设置文件读写的最简单的方法是使用由的MSBuild社区延伸提供了ATTRIB任务 。同一社区的扩展也用于容易地从MSBuild的主叫JSMin提供JSCompress任务。
因此你必须像下面(未测试):
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<!-- rest of TFSBuild.proj file -->
<Target Name="AfterGet">
<Message Text="Compressing Javascript files under "$(SolutionRoot)"." />
<CreateItem Include="$(SolutionRoot)\**\*.js">
<Output TaskParameter="Include" ItemName="JsFiles"/>
</CreateItem>
<Attrib Files="@(JsFiles)" ReadOnly="false"/>
<JSCompress Files="@(JsFiles)" />
</Target>
请注意,通过让他们很可能会出现问题,如果你想移动到增量构建修改后的文件。
不隶属于 StackOverflow