gpt4 book ai didi

visual-studio - `visual studio 2017 添加为链接内容文件 (aspnetcore)

转载 作者:行者123 更新时间:2023-12-04 07:38:50 26 4
gpt4 key购买 nike

由于 VS2017 返回到 csproj,我再次能够“作为链接”添加文件......不是!

当我链接文件时,我还希望将其复制到解决方案文件夹(不是输出目录,只是解决方案),例如 js 文件、webpack 配置文件等,我将它们共享和“链接”。但是为了让visual studio真正“看到”这些,我必须将它们复制到解决方案中。我在 csProj 文件中的 BeforeTargets="Build"事件中执行此操作。这就是我在 project.json 更改之前所做的(在 project.json 期间我根本没有这样做)。

但是......我现在发现当我重新打开解决方案时,它说“链接文件重复”并且不加载文件。这是正确的,因为文件是在构建期间复制的。这曾经奏效,因为以前的 Web 应用程序 csproj 以声明方式列出了项目中的所有文件。现在它查看目录并添加其中的任何内容。
知道如何使这项工作再次发挥作用吗?

对不起,如果不清楚我可以进一步发展,但 S.O 希望我保持简短的问题

谢谢!

更新:我已经重新安装了 VS 2017。重现了这个案例。同样的错误。现在我要给大家详细介绍:
1.我添加了一个链接文件,csproj是这样做的:

  <ItemGroup>
<None Include="..\..\..\..\Proyects\SomeProject\src\core.module.ts" Link="app\core\core.module.ts" />
</ItemGroup>
  • 它显示在解决方案资源管理器中:

  • enter image description here
  • 我修改 csproj 以将其物理复制到目标文件夹。此资源不是 cs 文件,而是已编译的。我需要 vs 才能实际拥有它:

    <目标名称="CopyLinkedContentFiles"BeforeTargets="Build">
    < Copy SourceFiles="%(Content.Identity)"DestinationFiles="%(Content.Link)"SkipUnchangedFiles="true"OverwriteReadOnlyFiles="true"Condition="'%(Content.Link)' != ''"/>
  • 重新加载解决方案:“重复的链接项目”。

  • 再补充几点:
    一种。这发生在 css 文件上
    湾使用 ts 文件......它甚至不会复制它们。完全忽略副本

    最佳答案

    好吧,我把它取下来了,但这并不好。

    首先,让我们了解问题是什么。
    1. 添加 CONTENT (js, ts, css, images) 文件“作为链接”
    2. 文件需要物理存在。为什么?在经典 Web 中,您需要输出目录中的这些资源,因为只有在运行应用程序时才会需要它们。由于 mines 是一个 webapi + angular 应用程序,我需要实际处理这些文件,而且它们必须在我的 IDE 中物理可用。首先,webpack需要编译它们,我有less和sass文件也是编译的。我也做 chrome 调试...文件需要在那里...所以你做一个 msbuild 任务来将文件从它们的源位置移动到你的目的地。文件必须从其来源再次复制(如果已更改)。这是标准做法,不是我自己的黑客
    3. 重新加载时,visual studio 会看到链接并尝试(实际上)将它们添加到项目结构中。 现在问题来了……文件已经在那里了,因为你在第 2 点强制它们在那里。

    这在 2015 年有效的原因是因为 2015 年的 csproj 不检查文件夹结构以列出其内容。文件应该在 csproj 中声明,以便在项目结构中。现在 2017 混合使用 csproj 和旧的“网站”项目,这将列出目录内容。由于 vs 2017“看到”了这些文件,因此在尝试添加它们时会感到困惑...

    所以我的解决方法是以这种方式改变我的 csproj:

  • 排除链接文件 <--这是vs2015的变化
  • 添加链接的文件
  • 复制链接文件

  • 所以它看起来像这样:
    消除
     <ItemGroup>
    <None Remove="app\core\somefile.ts" />
    </ItemGroup>

    添加。
      <ItemGroup>
    <None Include="..\..\..\..\Projects\Core\somefile.ts">
    <Link>app\core\somefile.ts</Link>
    </None>

    在构建时复制
      <Target Name="CopyLinkedContentFiles" BeforeTargets="Build">
    <Copy SourceFiles="%(None.Identity)" DestinationFiles="%(None.Link)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" ContinueOnError="true" Condition="'%(None.Link)' != ''" />
    </Target>

    我还想提一下,我对它进行了一些改进以使其具有递归性,因此我最终不会在其中包含所有引用,因此我的第 2 点实际上如下所示:
    <None Include="..\..\..\..\Projects\Core\**\*.*">
    <Link>app\Core\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </None>

    经过很多天的斗争,我必须说我对 csproj 2015 到 xproj 2017 到 csproj 2017 的旅程不是 100% 满意。我认为它是用一个很好的方式完成的,但他们以这种方式搞砸了很多程序员处理。我仍然喜欢它,但它让我(和许多其他人)在类似的事情上遭受了很多痛苦并浪费了很多天。我遇到的这个问题只是过时的文档海洋中的一个,项目名称更改等等。

    关于visual-studio - `visual studio 2017 添加为链接内容文件 (aspnetcore),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42725958/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com