【问题标题】:How to copy Content linked files to project directory without causing duplicates如何将内容链接文件复制到项目目录而不会导致重复
【发布时间】:2020-03-19 19:51:11
【问题描述】:

我正在尝试在我的项目中引用一些来自 nuget 包的 javascript 文件。所以我将这些文件添加为内容链接参考。

<Content Include="$(NuGetPath_jQuery)\Content\Scripts\**\*.*">
  <Link>Scripts\%(RecursiveDir)%(FileName)%(Extension)</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

但是我可以 F5 调试 web 项目,我需要这些文件成为项目文件夹结构的一部分。我还在 ScriptBundle 中使用这些文件,因此需要存在物理目录结构以进行本地调试。结果,我最终添加了以下构建 ttask,它根据 Matt Perdeck's blog 复制内容链接文件,这在许多其他围绕内容链接的线程中被引用,如下所示。

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

现在 VS 在 F5 调试时很开心。但是在下次加载项目时抱怨由于文件已经存在而无法添加内容链接。在以前的版本中复制了这些内容。我是否缺少一些秘诀来告诉 VS 忽略这些警告?我注意到 msbuild 不会发出任何此类警告。只有VS在抱怨。我看到如下警告:

警告无法将文件“C:\Users\pkorhale.nuget\packages\jquery\3.3.1\Content\Scripts\jquery-3.3.1.slim.min.js”添加到项目中.无法添加指向文件 jquery-3.3.1.slim.min.js 的链接。此文件夹中已有同名文件。

【问题讨论】:

    标签: c# .net visual-studio msbuild visual-studio-2019


    【解决方案1】:

    原来,我需要关闭此内容的可见性。无论如何,文件会被物理复制,因此我们最终会在第一次构建后在解决方案资源管理器中看到它。这对我来说已经足够了。

    <Content Include="$(NuGetPath_jQuery)\Content\Scripts\**\*.*">
      <Link>Scripts\%(RecursiveDir)%(FileName)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>false</Visible>
    </Content>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多