我正在寻找一种方法来导入'一个.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;中。
答案 0 :(得分:3)
Likley更好的方法是将“Main.csproj”作为“类库”(程序集)并将其作为对其他项目的引用添加。
准确地实现您要求使用Import元素添加共享文件的内容。
通过使用Import元素,您可以重用许多项目文件共有的代码。这样可以更容易地维护代码,因为您对共享代码所做的任何更新都会传播到导入它的所有项目。
按照惯例,共享导入的项目文件保存为.targets文件,但它们是标准的MSBuild项目文件。 MSBuild不会阻止您导入具有不同文件扩展名的项目,但我们建议您使用.targets扩展名以保持一致性。
<Import Project="mySharedFiles.targets"/>
请注意Import
将包含内置于每个程序集中的类的副本 - 如果需要在程序集之间共享类,则可以使用类库方法。