C# Visual Studio 2010:将csproj导入到另一个csproj中;注入;通过svn外部

C# Visual Studio 2010:将csproj导入到另一个csproj中;注入;通过svn外部,c#,asp.net,visual-studio-2010,svn,webforms,C#,Asp.net,Visual Studio 2010,Svn,Webforms,我正在寻找将.csproj文件“导入”到另一个.csproj文件的方法 例如,以下场景: Main.csproj: <Compile Include="Class1.cs" /> <Compile Include="Class2.cs" /> 潜艇 <Compile Include="Class1.cs" /> <Compile Include="Class2.cs" /> <Compile Include="Class3.cs" /&

我正在寻找将.csproj文件“导入”到另一个.csproj文件的方法

例如,以下场景:

Main.csproj:

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

潜艇

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

现在,以某种方式继承我的“submin.csproj”中的“Main.csproj”会很好

也许在《潜水艇》里是这样的:

<Include File="Main.csproj" />
<Compile Include="Class3.cs" />

那么它会自动添加“Main.csproj”中的文件吗

对于ASP.NETWeb项目,VisualStudio2010是否可以实现类似的功能

如果没有,对于给定场景是否有其他解决方案

谢谢

编辑我为什么需要它:

在我的例子中,这两个项目都是ASP.NETWeb项目(WebForms)。 “Main.csproj”是基本应用程序。 “submin.csproj”是Web应用程序的特定于客户的版本。(具有与基本应用程序相同的功能+一些额外功能或特定功能的一些其他行为)


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

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

要准确地实现您的要求,请使用元素添加共享文件

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

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



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

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

要准确地实现您的要求,请使用元素添加共享文件

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

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




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

为什么?你想完成什么?我是SLaks-看起来你将要围绕引用程序集/库的基本概念展开工作。我更新了描述并描述了我需要它的背景。你描述的案例应该由源代码版本控制系统中特定于客户的分支解决。任何现代风投公司都将支持这种情况。如果你还没有使用VCS,这就是开始这样做的一个很好的理由。@Filburt:我们已经使用SVN了。我们有多个SVN回购协议。一个用于基本版本,一个用于每个客户。基本版本使用svn externals添加到客户回购协议中。我遇到的问题是csproj文件。对于客户版本,我只需复制基本csproj并将客户文件添加到其中。但是,当基本项目文件更改时,这是一个问题。那么我需要把这些合并给每个客户…为什么?您想完成什么?我正在处理SLaks—看起来您即将围绕引用程序集/库的基本概念进行工作。我更新了描述并描述了为什么需要此项工作。您描述的案例应该由源代码版本控制系统中的特定客户分支解决。任何现代的VCS都支持这种情况。如果你还没有使用VCS,这就是开始这样做的一个很好的理由。@Filburt:我们已经使用SVN了。我们有多个SVN回购协议。一个用于基本版本,一个用于每个客户。基本版本使用svn externals添加到客户回购协议中。我遇到的问题是csproj文件。对于客户版本,我只需复制基本csproj并将客户文件添加到其中。但是,当基本项目文件更改时,这是一个问题。然后我需要为每个客户合并这些……我不能将其更改为类库,因为它是一个Web项目。我已经在上面的描述中添加了背景,为什么要这样做。@H0ff1:您熟悉虚拟目录和应用程序的概念吗?那可能对你有帮助。如果您真的需要将客户的具体信息“合并”到一个基本web应用程序中,那么您将有一段有趣的时间。@AlexeiLevenkov:该方法也适用于asp.net webforms项目吗?我如何生成.targets文件?@johnsaunds:虚拟目录和/或应用程序在这方面对我有何帮助?您可以让每个客户都有自己的虚拟目录/应用程序。我无法将其更改为类库,因为它是一个Web项目。我已经在上面的描述中添加了背景,为什么要这样做。@H0ff1:您熟悉虚拟目录和应用程序的概念吗?那可能对你有帮助。如果您真的需要将客户的具体信息“合并”到一个基本web应用程序中,那么您将有一段有趣的时间。@AlexeiLevenkov:该方法也适用于asp.net webforms项目吗?我怎样才能生成一个。
<Import Project="mySharedFiles.targets"/>