use*_*504 3 msbuild csproj visual-studio asp.net-web-api
由于VS2017返回csproj,我再次能够添加"链接"文件......不!
当我链接文件时,我也希望将它复制到解决方案文件夹(不是输出目录,只是解决方案),例如js文件,webpack配置文件等,我将它们共享并"链接".但为了让视觉工作室真正"看到"这些,我必须将它们复制到解决方案中.我在csProj文件中的BeforeTargets ="Build"事件中执行此操作.这就是我在project.json改变之前做的事情(在project.json期间我根本就没有做过).
但是......我现在发现,当我重新打开解决方案时,它说"链接文件重复"并且不加载文件.这是正确的,因为文件是在构建期间复制的.这是因为之前的Web应用程序csproj以声明方式列出了项目中的所有文件.现在它看起来是目录,只是添加其中的内容.知道如何重新开始这项工作吗?
对不起,如果不清楚我可以进一步发展,但所以我希望我保持简短的问题
谢谢!
更新:我重新安装了VS 2017.转载此案.同样的错误.我现在要给你们更详细的信息:1.我添加了一个链接文件,csproj做了这个:
<ItemGroup>
<None Include="..\..\..\..\Proyects\SomeProject\src\core.module.ts" Link="app\core\core.module.ts" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我修改csproj以将其物理复制到目标文件夹.此资源不是cs文件,但是已编译.我需要vs能够拥有它:
<Target Name ="CopyLinkedContentFiles"BeforeTargets ="Build"> <Copy SourceFiles ="%(Content.Identity)"DestinationFiles ="%(Content.Link)"SkipUnchangedFiles ="true"OverwriteReadOnlyFiles ="true"Condition ="'% (Content.Link)'!=''"/> </ Target>
重新加载解决方案:"重复链接项".
还有一些评论:a.这发生在css文件b上.使用ts文件...它甚至不会复制它们.完全忽略副本
好吧,我把它拉了下来,但这并不好.
首先,让我们了解问题所在.1.添加内容(js,ts,css,images)文件"作为链接"2.文件需要在物理上存在.为什么?在经典Web中,您需要输出目录中的这些资源,因为只有在运行应用程序时才需要它们.由于mines是一个webapi + angular应用程序,我需要实际使用这些文件,并且它们必须在物理上可用于我的IDE.首先,webpack需要编译它们,我有更少和sass文件也编译.我也做chrome调试......文件需要在那里......所以你做一个msbuild任务把文件从源位置移动到你的目的地.必须从源文件中再次复制文件(如果已被删除).这是一个标准的做法,而不是我自己的黑客3.在重新加载时,visual studio会看到链接并尝试(虚拟地)将它们添加到项目结构中.现在问题是......文件已经存在,因为你强迫他们在第2点出现.
之所以在2015年有效,是因为2015年的csproj没有检查文件夹结构以列出其内容.文件应该在csproj中声明,以便在项目结构中.现在2017使用csproj和旧的"网站"项目的混合,它将列出目录内容.由于vs 2017"看到"文件,因此在尝试添加文件时会引起混淆...
所以我的工作是以这种方式改变我的csproj:
所以它看起来像这样:删除
<ItemGroup>
<None Remove="app\core\somefile.ts" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
加.
<ItemGroup>
<None Include="..\..\..\..\Projects\Core\somefile.ts">
<Link>app\core\somefile.ts</Link>
</None>
Run Code Online (Sandbox Code Playgroud)
复制建筑
<Target Name="CopyLinkedContentFiles" BeforeTargets="Build">
<Copy SourceFiles="%(None.Identity)" DestinationFiles="%(None.Link)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" ContinueOnError="true" Condition="'%(None.Link)' != ''" />
</Target>
Run Code Online (Sandbox Code Playgroud)
我还想提一下,我对它进行了一些改进以便递归,所以我不会在那里找到所有引用,所以我的第2点看起来像这样:
<None Include="..\..\..\..\Projects\Core\**\*.*">
<Link>app\Core\%(RecursiveDir)%(FileName)%(Extension)</Link>
</None>
Run Code Online (Sandbox Code Playgroud)
经过多天的战斗,我必须说我对csproj 2015到xproj 2017到csproj 2017的旅程并不百分之百.我认为这是一个很好的工作,但他们用很多方式搞砸了很多程序员处理.我仍然喜欢它,但它让我(以及许多其他人)遭受了很多苦难,并且浪费了很多天才能解决这个问题.我遇到的这个问题只是众多文档中的一个,它已经过时,项目名称发生变化等等.
| 归档时间: |
|
| 查看次数: |
1753 次 |
| 最近记录: |