Visual Studio 链接文件的目录结构

4

我有一个项目的两个版本,一个是Silverlight版本,另一个是.NET版本。SL版本包含了绝大部分的代码。我想要将SL版本中的所有文件作为链接文件添加到.NET版本中。我已经成功地在.NET版本的csproj文件中这样做:

<Compile Include="..\MyProj.Common.SL\**\*.cs" Exclude="..\MyProj.Common.SL\Properties\**">

很不幸,这会把所有文件添加到项目的根目录...所以我最终得到了一个冗长而难以阅读的链接文件列表。我真的不想手动维护整个重复的目录结构,并处理目录名称更改和文件名称更改等问题。
那么,在使用通配符方式添加链接文件时,有没有办法让Visual Studio保留目录结构呢?或者至少有一种方法可以让它将所有链接文件组合在.NET项目的一个目录下,比如MyProj.Common.SL.Links?
我做过的最接近的尝试是在标记下设置false,这有效地删除了超过300个文件的长而难以阅读的列表...但不幸的是,这破坏了Resharper,它不再将这些文件视为有效文件,并在引用.NET项目的所有项目上运行。如果我能找到一种让Resharper不会出现混乱的方法,那也是可接受的解决方案...
有什么建议吗?
谢谢。

1
我希望能够看到类似于VS插件的实现。可以称之为“链接所有项目文件”或其他名称,你可以在项目A中告诉它从项目B链接所有项目文件,并将项目B中的所有文件作为链接添加到项目A中,并保持目录结构不变。然后它可以作为预构建步骤运行。有没有任何具有VS扩展经验的人可以发表意见? - PhilChuang
2个回答

4

我认为我找到了使此工作的方法:

<Compile Include="..\MyProj.Common.SL\**\*.cs" Exclude="..\MyProj.Common.SL\Properties\**">
  <Link>MyProj.Common.SL.LinkedFiles\MyProj.Common.SL.LinkedFiles</Link>
</Compile>

它将创建一个名为 MyProj.Common.SL.LinkedFiles 的文件夹,并将所有链接文件分组存储在该文件夹下。

0

我认为我会这样做:

  • 复制现有项目的<Compile>项,其中包括例如Include="foo.cs"Include="Folder\bar.cs"
  • 将它们粘贴到新项目中
  • 搜索并替换<Compile Include="(.*?)" /><Compile Include="..\Other\$1" ><Link>$1</Link></Compile>

我不知道我是否完全正确地理解了正则表达式搜索和替换语法,但重点是,您已经有一个好的项目,应该能够剪切、粘贴、正则表达式替换它,以获得相同的文件集,只是从不同的文件夹引用,并具有相同的目录结构。

在这一点上,您仍然需要维护两个 .csproj 文件,但这也很容易解决。现在将这个新的编译项列表放入一个名为“Common.csproj”的文件中,该文件只包含具有这些编译项的属性组,然后让两个项目 <Import Include="..\Common.csproj" /> 并且不包括任何自己的 Compile 项。

基本上,手动重构 .csproj 文件以进行共享,然后我认为您就可以了。我不确定这是否是解决问题的“最简单”方法,但我认为这听起来大致符合您对“理想”结构的要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接