Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 针对多个框架,如何实现?_.net_Visual Studio_Mercurial_Project Management_Project Organization - Fatal编程技术网

.net 针对多个框架,如何实现?

.net 针对多个框架,如何实现?,.net,visual-studio,mercurial,project-management,project-organization,.net,Visual Studio,Mercurial,Project Management,Project Organization,我在Mercurial rep中有一个c#库(在VS2010中开发),它目前的目标是netFX-3.5。netFX-4.0中有一些功能我想在我的库中使用,但由于有很多项目仅限于2.0 CLR,我也希望保留和维护netFX-3.5版本。自然会有一些代码(甚至可能是大部分代码)在两个版本中都是相同的。现在我很困惑,这是保持这一点的最好(或至少是好)方法 我应该在VS中创建一个单独的项目吗?或者创建存储库的克隆?有没有一些行之有效的策略 更新: 我发现了VS特性,它允许在项目之间共享一个文件,这对于在

我在Mercurial rep中有一个c#库(在VS2010中开发),它目前的目标是netFX-3.5。netFX-4.0中有一些功能我想在我的库中使用,但由于有很多项目仅限于2.0 CLR,我也希望保留和维护netFX-3.5版本。自然会有一些代码(甚至可能是大部分代码)在两个版本中都是相同的。现在我很困惑,这是保持这一点的最好(或至少是好)方法

我应该在VS中创建一个单独的项目吗?或者创建存储库的克隆?有没有一些行之有效的策略

更新: 我发现了VS特性,它允许在项目之间共享一个文件,这对于在同一个解决方案中将两个目标作为两个项目来实现是一个巨大的优势。我很确定我会同意这个解决方案,但是如果有更多的建议,那就太好了

更新2:
正如我前面说过的,使用addaslink特性可以获得如下结果:为旧(3.5)框架创建一个新项目。将所有文件添加为顶级版本项目的链接。在v4.0项目中,通过
partial class
规范(如
ClassName.Net40.cs
)向类添加netFX-4.0功能。对我来说很好。

通常人们通过MSBUID目标来实现,但是,Microsoft最近发布了一些非常酷的“可移植库工具”Visual Studio扩展,它添加了一个与类库非常相似的新项目类型,但已经有了支持多个框架的基础结构,甚至包括Silverlight、WP7


检查

通常人们通过MSBUID目标执行此操作,但是,Microsoft最近发布了一些非常酷的“可移植库工具”Visual Studio扩展,它添加了一个与类库非常类似的新项目类型,但已经有了支持多个框架的基础结构,甚至包括Silverlight、WP7


检查一下,我不知道有什么行之有效的策略,因为它实际上取决于什么不同以及如何不同。在不知道具体情况的情况下,我可以提供一些可能会有所帮助的想法

#如果 一种方法是为.NET 3.5和.NET 4.0创建单独的生成配置,以便您可以在每个生成配置中指定单独的条件编译符号,并在某些位置执行类似操作:

#if NET40
    // something specific to .NET 4.0
#else
    // version for .NET 3.5
#endif
构建配置使您可以轻松地从一个配置切换到另一个配置,并一次构建所有配置。然而,它们主要对代码有帮助

MQ 我在一个项目中这样做的方式(有一段时间,我需要一个.NET3.5版本的Caliburn.Micro)是使用Mercurial队列来获得一个补丁,我可以在存储库上应用它来“降级”东西。使用MQ是解决方案的必要部分,因为我仍然需要能够更新CM存储库的克隆并重新应用更改

条件编译在这里帮不上我的另一个原因是CM对Blend SDK交互程序集的引用需要更改为以前的版本,而我不知道如何在项目文件中进行条件引用


(如果您以前没有使用过MQ:,以及Mercurial:最终指南的章节和。)

我不知道任何经验证的策略,因为它实际上取决于什么不同以及如何不同。在不知道具体情况的情况下,我可以提供一些可能会有所帮助的想法

#如果 一种方法是为.NET 3.5和.NET 4.0创建单独的生成配置,以便您可以在每个生成配置中指定单独的条件编译符号,并在某些位置执行类似操作:

#if NET40
    // something specific to .NET 4.0
#else
    // version for .NET 3.5
#endif
构建配置使您可以轻松地从一个配置切换到另一个配置,并一次构建所有配置。然而,它们主要对代码有帮助

MQ 我在一个项目中这样做的方式(有一段时间,我需要一个.NET3.5版本的Caliburn.Micro)是使用Mercurial队列来获得一个补丁,我可以在存储库上应用它来“降级”东西。使用MQ是解决方案的必要部分,因为我仍然需要能够更新CM存储库的克隆并重新应用更改

条件编译在这里帮不上我的另一个原因是CM对Blend SDK交互程序集的引用需要更改为以前的版本,而我不知道如何在项目文件中进行条件引用


(如果您以前没有使用过MQ:,以及Mercurial:The Definitive Guide的章节和。)

为什么不能在类库中使用通用代码呢?我认为这是不可能的。我需要访问在类库中无法访问的私有字段和方法。无论如何,对我来说,这似乎是一个尴尬的解决方案。你说你需要访问私有字段是什么意思?您不能从不同的目标框架访问私有字段,因为您只能访问类中的私有字段。现在,我实际上如何使用你的方法(在类库中有公共代码)隔离,比如说,在netFX-3.5和netFX-4.0版本中不同的类的某些方法?你会使用部分类为什么不能在类库中有公共代码?我认为这是不可能的。我需要访问在类库中无法访问的私有字段和方法。无论如何,对我来说,这似乎是一个尴尬的解决方案。你说你需要访问私有字段是什么意思?您不能从不同的目标框架访问私有字段,因为您只能访问类中的私有字段。现在,我如何使用你的方法(在类库中有公共代码)来隔离,比如说,在netFX-3.5和netFX-4.0版本中会有所不同的类的某些方法?你会使用部分类移植库工具目前看来是一个非常不可靠的解决方案,但是谢谢你的提示。到目前为止,便携式库工具似乎是一个非常不可靠的解决方案,但是谢谢你的提示。我接受这个答案,因为