我添加了一个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 &quot;$(SolutionRoot)&quot;." />   
  <CreateItem Include="$(SolutionRoot)\**\*.js">
    <Output TaskParameter="Include" ItemName="JsFiles"/>
  </CreateItem>
  <Attrib Files="@(JsFiles)" ReadOnly="false"/>
  <JSCompress Files="@(JsFiles)" />
</Target>

请注意,通过让他们很可能会出现问题,如果你想移动到增量构建修改后的文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top