如何在 Visual Studio 中混合不同编译器版本的程序:?

Posted

技术标签:

【中文标题】如何在 Visual Studio 中混合不同编译器版本的程序:?【英文标题】:How to Mix different compiler versions programs in visualstudio:? 【发布时间】:2009-05-14 06:02:02 【问题描述】:

我们的整个项目是在 vs2003 上构建的。之前他们在项目中使用了 SQLDMO。现在

我们已经计划使用 SQLSMO 代替它,它必须具有 .NETFRAMEWORK 2.0。但从我的

知识vs2003运行在.network1.1下。

现在我的问题是如何混合这两者。我的想法在我的机器里我已经有了

.NETFRAMEWORK 2.0 安装后使用 2.0 框架编译了 SMO 项目(我编写了托管代码),然后

我可以把这个混到 VS2003 上吗? (当我尝试使用 msbuild.exe 时如何使用 .NET 框架进行编译,它显示项目需要打开并转换为最新版本错误,显示如何纠正这个错误)

(或)

我需要迁移到 VS2005(仅最后一个选项)

帮帮我plzzzzzzzzzzzz

【问题讨论】:

【参考方案1】:

要做的第一件事——在 VS2008(或者 2005,如果你不能获得 '8)中启动项目,看看它是如何转换的——很多东西实际上会转换得很好,没有太多的重大变化。这将确定前进的痛苦程度。将其与较新版本的框架中的功能进行比较,您应该可以轻松做出决定。

另外请记住,如果某些组件几乎是死信,.NET 2.0 在大多数情况下肯定可以与 1.1 程序集对话和引用,因此如果某些部分无法转换但没有改变,您可以静态地参考他们。

【讨论】:

【参考方案2】:

我的建议是不要尝试,在更高版本的 Visual Studio 上标准化,您可以轻松迁移解决方案/项目文件。

【讨论】:

另外,跨版本的框架调用是个坏主意。您的 1.1 程序集将加载到与 2.0 程序集不同的应用程序域中。不好。 但是转换并不像你说的那么容易。因为这个项目有很多依赖项目,所以我正在寻找替代选项【参考方案3】:

如果您需要使用 .NET 框架 2.0,您可以选择 Visual Studio 2005 或 VS2008。我的首选是 VS2008,因为您可以从中定位不同的 .NET 环境,而不是绑定到单个框架版本的早期 Visual Studio。

如果您有很多其他项目依赖于您,那么您要么也必须转换它们,要么继续使用 .NET 1.1 并忘记 SQLSMO。我不认为你可以两者兼得。另一方面,如果有几个其他项目依赖于您生成符合 1.1 的程序集,那么您几乎会被 VS2003 卡住,并且可以忘记 SQLSMO(再次)。

【讨论】:

以上是关于如何在 Visual Studio 中混合不同编译器版本的程序:?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2012 速成版附带的混合中制作 wpf 应用程序

Visual Studio 混合项目调试

如何在visual studio2008中创建,编译和运行C++程序,

C++ 与 gcc 和 Visual Studio 不同的编译错误,“在此上下文中”

适用于 Visual Studio 2015 的混合

如何只用visual c++编译器而不安装visual studio