Visual Studio链接文件目录结构

时间:2010-06-13 21:27:03

标签: visual-studio visual-studio-2010 resharper csproj

我有两个版本的项目。一个用于Silverlight,一个用于.NET。 SL项目拥有绝大部分代码库。我想全局地将SL项目中的所有文件作为链接文件添加到.NET版本中。我已经成功地在.NET版本的csproj文件中成功完成了这样做:

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

不幸的是,这会将所有文件添加到我项目的根目录中......所以我最终得到了一个很长的不可读的.NET项目链接文件列表。我真的真的不想手工维护整个重复的目录结构,并处理目录名称更改和文件名更改等等。

那么,在上面以通配符方式添加链接文件时,有没有办法让Visual Studio保留目录结构?或者是否至少有一种方法可以将所有链接文件组合在.NET项目目录下,如MyProj.Common.SL.Links?

我最接近的是将<Visible>false</Visible>设置在<Compile>标记下,这有效地删除了300多个文件的长不可读列表....但不幸的是,这搞砸了Resharper,它不再将这些文件视为有效,并且在引用.NET项目的所有项目上都会发疯。如果我能找到一种让Resharper搞砸的方法,那也是一个可以接受的解决方案......

有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分: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文件夹,并将该文件夹下的所有链接文件分组。

答案 1 :(得分:0)

我想我会这样做:

  • 复制现有项目的<Compile>项目,这些项目可能是Include="foo.cs"Include="Folder\bar.cs"
  • 将它们粘贴到新项目中
  • 使用<Compile Include="(.*?)" />
  • 搜索并替换<Compile Include="..\Other\$1" ><Link>$1</Link></Compile>

我不知道我是否正确完成了正则表达式搜索和替换语法,但关键是,你已经有了一个好的项目,你应该能够剪切,粘贴,正则表达式替换它以获得相同的一组文件,仅从不同的文件夹引用,并具有相同的目录结构。

此时你还需要保留两个.csproj,但这也很容易修复。现在获取这个新的编译项列表,并将其放在一个名为eg的文件中。 “Common.csproj”只包含具有这些编译项的属性组,然后同时包含两个项目<Import Include="..\Common.csproj" />,并且不包含他们自己的任何Compile项。

基本上,一点点手工劳动来重构.csproj文件以进行一次共享,然后我认为你将被设置。我不确定这是否是解除阻挡的“最简单”方式,但我认为这听起来大概就像你想要的“理想”结构一样。

相关问题