Visual studio 2010 如何在VisualStudio2010中为.NET3.5编写
我有一个ASP MVC 2项目,最初是在VS2008中编写的,但现在升级到VS2010。但是,我希望继续使用.NET3.5,因为生产环境并不总是安装.NET4。我认为这是可能的。升级项目时,我对升级.net framework版本的问题回答了“否”。我已经检查过了,并且在项目的高级编译选项中将.NET3.5设置为目标框架 我的问题是,我可以编写在VS中构建和运行良好,但在.NET3.5环境中不起作用的代码。例如,我添加了一个具有Integer?类型可选参数的函数?(可为空的整数)。这似乎在4中允许,但在3.5中不允许?无论如何,在VS 2010中效果很好。然而,当我尝试构建和部署时,我遇到了两个问题之一。(我们使用自定义构建/部署脚本-构建在单独的构建服务器上使用msbuild。) 问题1是如果我尝试使用3.5版本的msbuild。然后生成失败,并显示消息“错误BC31405:可选参数不能具有结构类型。” 问题2是,如果我尝试在生成服务器上使用.net 4版本的msbuild(请记住,目标框架仍然是3.5,唯一的更改是生成脚本使用的msbuild可执行文件)。在本例中,它会生成,但当我尝试在安装了3.5但未安装.net 4的服务器上运行该站点时,会出现错误“无法加载文件或程序集'ProjectName.XmlSerializers'或其依赖项之一。此程序集是由比当前加载的运行时更新的运行时生成的,无法加载。” 根据MSDN(http://msdn.microsoft.com/en-us/library/bb398202.aspx)我所需要做的就是确保目标框架是正确的(以及引用,但似乎没有问题,因为它可以根据3.5构建,只要我避免某些语法,等等) 问题是,我在VS中没有得到任何错误来告诉我,如果我使用那些不会构建的结构,可能会出现问题。根据有关MSDN的Visual Studio多目标概述文章(http://msdn.microsoft.com/en-us/library/bb398197.aspx) “当您处理一个以.NET Framework早期版本为目标的项目时,Visual Studio会在开发环境中动态地进行更改,例如以下。。。它使用适当的编译器版本和适当的编译器选项编译和生成“那么为什么它在VS中编译而不使用msbuild 我想知道问题是否出在工具集属性上(如果在命令行中为msbuild 4指定/tv:3.5,则生成错误与msbuild 3.5相同)(http://msdn.microsoft.com/en-us/library/ee395432.aspx) "您可以通过设置项目文件的项目元素的ToolsVersion属性来指定工具集。但是,如果我将.vbproj文件中的ToolsVersion=“4.0”更改为ToolsVersion=“3.5”,则在尝试重新加载项目时会弹出Visual Studio转换向导 那么,我怎样才能: A-让VS2010接受它是一个.NET3.5项目,并使用适当的后台编译器,因此在开发期间(在它到达构建服务器之前)向我显示错误 或Visual studio 2010 如何在VisualStudio2010中为.NET3.5编写,visual-studio-2010,.net-3.5,msbuild,Visual Studio 2010,.net 3.5,Msbuild,我有一个ASP MVC 2项目,最初是在VS2008中编写的,但现在升级到VS2010。但是,我希望继续使用.NET3.5,因为生产环境并不总是安装.NET4。我认为这是可能的。升级项目时,我对升级.net framework版本的问题回答了“否”。我已经检查过了,并且在项目的高级编译选项中将.NET3.5设置为目标框架 我的问题是,我可以编写在VS中构建和运行良好,但在.NET3.5环境中不起作用的代码。例如,我添加了一个具有Integer?类型可选参数的函数?(可为空的整数)。这似乎在4中允
B-构建项目的方式(例如,使用msbuild 4)是这样的:它将构建但仍在仅.net 3.5的环境中运行?似乎您正试图在
.net Framework 3.5
应用程序中使用C\4.0语言功能
不要使用C#4.0
中引入的新功能,例如:
- 可选参数
- 动态规划
- 协方差/反方差
您应该会没事。似乎您正试图在.NETFramework 3.5
应用程序中使用C#4.0语言功能
不要使用C#4.0
中引入的新功能,例如:
- 可选参数
- 动态规划
- 协方差/反方差
你应该很好。我知道如果我避免使用任何新的语言功能(实际上这是一个vb.net项目,而不是C#项目),我会很好。问题是,我没有100%准确地知道在哪种框架下允许使用什么。像Visual Studio这样的IDE的全部目的就是帮助实现这一点。我对它使用适当版本的编译器进行编译和生成“在上面的引述中,它应该针对3.5进行编译,即使在VS中也是如此,因此当我在VS中编写/构建/调试时,我应该直接得到错误。同样,我可以在记事本中完成所有开发工作。我不知道。你不必担心知道什么类是BCL 4.0的一部分,这样你就可以避免使用它们。当目标为3.5时,只有3.5个部件可用。您只需避免使用VB 10的新功能即可。我知道,如果我不使用任何新的语言功能(实际上这是一个vb.net项目,而不是C#项目),我就没事了。关键是,我并没有100%准确地知道在哪个框架下允许什么。像VisualStudio这样的IDE的全部目的就是帮助实现这一点。我对上面引用的“它使用适当版本的编译器编译和构建”的理解是,即使在VS中,它也应该针对3.5进行编译,因此当我在VS中编写/构建/调试时,我应该直接得到错误。同样,我可以在记事本中完成所有开发。我不知道。你不必担心知道什么类是BCL 4.0的一部分,这样你就可以避免使用它们。当目标为3.5时,只有3.5个部件可用。您只需避免使用VB 10的新功能即可。