Visual Studio 2010:通过svn-externals将csproj导入另一个“注入”的csproj

时间:2014-03-12 18:31:56

标签: c# asp.net visual-studio-2010 svn webforms

我正在寻找一种方法来导入'一个.csproj文件到另一个.csproj文件中。

例如以下场景:

Main.csproj:

<Compile Include="Class1.cs" />
<Compile Include="Class2.cs" />

SubMain.csproj

<Compile Include="Class1.cs" />
<Compile Include="Class2.cs" />
<Compile Include="Class3.cs" />

现在以某种方式继承“Main.csproj&#39;在我的SubMain.csproj&#39;。

在SubMain.csproj&#39;:

中可能是类似的东西
<Include File="Main.csproj" />
<Compile Include="Class3.cs" />

因此它会自动添加&#39; Main.csproj&#39;?

中的文件

Visual Studio 2010 for ASP.Net Web Projects是否可以实现这一点?

如果没有,是否有针对给定方案的替代解决方案?

感谢。

编辑为什么我需要:

在我看来,这两个项目都是ASP.Net Web Projects(WebForms)。 &#39; Main.csproj&#39;是基本应用程序。 &#39; SubMain.csproj&#39;是Web应用程序的客户特定版本。 (具有与基本应用程序相同的功能+一些额外功能或某些特定功能的其他行为)

目前我只需复制Main.csproj并添加我的附加文件即可。但是这种方法不是很好,并且在将文件添加到Main.csproj时也会导致问题,因此它们不会自动出现在我的SubMain.csproj&#39;中。

1 个答案:

答案 0 :(得分:3)

Likley更好的方法是将“Main.csproj”作为“类库”(程序集)并将其作为对其他项目的引用添加。

准确地实现您要求使用Import元素添加共享文件的内容。

  

通过使用Import元素,您可以重用许多项目文件共有的代码。这样可以更容易地维护代码,因为您对共享代码所做的任何更新都会传播到导入它的所有项目。

     

按照惯例,共享导入的项目文件保存为.targets文件,但它们是标准的MSBuild项目文件。 MSBuild不会阻止您导入具有不同文件扩展名的项目,但我们建议您使用.targets扩展名以保持一致性。

<Import Project="mySharedFiles.targets"/>

请注意Import将包含内置于每个程序集中的类的副本 - 如果需要在程序集之间共享类,则可以使用类库方法。