在Visual Studio 2010中处理常见的JavaScript文件

isN*_*247 43 javascript visual-studio-2010

我们正在开始研究几个完全依赖于JavaScript的Web应用程序(我们之前的应用程序是ASP.NET MVC,其中JavaScript的优点已经超越了顶层).

我们有一些文件将被全面共享,将这些文件存储在Common项目中,并将它们"添加为链接"到各个项目中(这与编译代码一样)是很好的.

显然,这不适用于像JavaScript这样的东西,因为文件实际上并没有在正确的位置.

有没有人建议保留单个版本的共享JavaScript文件,以便在多个项目中使用?

use*_*862 49

我知道这个问题很古老,但仍然想提出我的解决方案,因为它比胡子w更简单.

您可以通过在.csproj文件末尾添加此文件,确保Visual Studio将所有链接文件复制到您在Visual Studio的解决方案资源管理器中放置链接的位置:

  <Target Name="CopyLinkedContentFiles" BeforeTargets="Build">
    <Copy SourceFiles="%(Content.Identity)" 
          DestinationFiles="%(Content.Link)" 
          SkipUnchangedFiles='true' 
          OverwriteReadOnlyFiles='true' 
          Condition="'%(Content.Link)' != ''" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

我已经在http://mattperdeck.com/post/Copying-linked-content-files-at-each-build-using-MSBuild.aspx上的博客文章中描述了它是如何工作的.


isN*_*247 20

最后,这就是我实现它的方式.这可能不是每个人的口味 - 但对我来说是一种享受.

注意:在我们的所有项目中,静态资源都位于名为"Assets"的根目录中,因此例如JavaScript始终位于/ Assets/js /和CSS/Assets/css /中.

  1. 在要导入公共代码的项目中,我只需在/ Assets/js /中添加常见的.js文件"As Link".
  2. 转到新添加的属性并将"复制到输出目录"设置为"如果更新则复制".
  3. 现在我只需将项目的构建后事件命令行编辑为以下内容: xcopy/Y/E"$(TargetDir)\ Assets""$(ProjectDir)\ Assets"

当项目构建时,它会将导入的文件复制到\ bin\Assets\_js - 构建后事件然后将这些文件的副本复制到项目目录中 - 以便网站使用它们.

  • 你可以添加/ D参数只复制更改的文件:xcopy/Y/E/D"$(TargetDir)\ Assets""$(ProjectDir)\ Assets" (5认同)
  • 从这个问题中最受欢迎的答案中得到启示:http://stackoverflow.com/questions/3018289/xcopy-file-rename-suppress-does-xxx-specify-a-file-name-message我修改了命令行如下:`echo f | xcopy/Y/E"$(TargetDir)Content""$(ProjectDir)Content"`,它阻止了在我的场景中出现"退出代码X"错误. (2认同)