Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
C# 有没有办法在VisualStudio2008中使用2005C编译器?_C#_Visual Studio 2008 - Fatal编程技术网

C# 有没有办法在VisualStudio2008中使用2005C编译器?

C# 有没有办法在VisualStudio2008中使用2005C编译器?,c#,visual-studio-2008,C#,Visual Studio 2008,我正在一个项目中使用VisualStudio2008/C。我们使用的是.NET2.0,以及2.0中发布的任何版本的C。我可以在VS2008中将我的项目设置为使用.NET2.0框架,但我不知道在哪里选择我的C编译器。通常这会是一个问题,但我每天90%的时间都花在JS上,所以我在C中声明变量时不小心留下了一个var语句。这在我的机器上编译得很好,VS没有报告错误,然后它破坏了构建。有没有办法使用VS 2005中较旧的C编译器对不起,我不知道VS 2008中的版本是什么?您不能告诉它使用C2编译器,但

我正在一个项目中使用VisualStudio2008/C。我们使用的是.NET2.0,以及2.0中发布的任何版本的C。我可以在VS2008中将我的项目设置为使用.NET2.0框架,但我不知道在哪里选择我的C编译器。通常这会是一个问题,但我每天90%的时间都花在JS上,所以我在C中声明变量时不小心留下了一个var语句。这在我的机器上编译得很好,VS没有报告错误,然后它破坏了构建。有没有办法使用VS 2005中较旧的C编译器对不起,我不知道VS 2008中的版本是什么?

您不能告诉它使用C2编译器,但可以告诉它将自己限制为使用C2语言

在项目属性中,转到“生成”选项卡,单击“高级…”。。。按钮,在右下角有一个语言版本选项。。。你想要ISO-2

请注意,这并不是完美的-它会阻止您使用大多数非C-2功能,但某些更改可能仍然可以通过。例如,我相信它仍然会使用c3中比c2版本更强大的泛型类型推断。这是值得注意的。下面是一个例子:

using System;

class Test
{
    static void Main()
    {
        Foo("hello", new object());
    }

    static void Foo<T>(T first, T second)
    {
    }
}
C2编译器无法决定在调用Foo时对t使用什么,因为每个参数都完全单独用于确定类型推断,任何矛盾的结果都会导致编译时错误。C3使用每个参数来添加T可以是什么的边界,并且仅当边界冲突或无法确定类型参数时才会给出错误。在c2模式下调用c3编译器时,仍然使用c3行为


但是,有什么原因不能将实际构建转换为使用.NET3.5C3编译器吗?没有必要仅仅因为使用.NET2就把自己束缚在C2上。见鬼,您甚至可以使用LINQ to Objects:

在项目属性中,转到Build选项卡,然后点击Advanced,将语言版本更改为ISO-2而不是C3。这仍然使用新的2008编译器,但阻止您使用C3.0功能,这应该可以实现您的目标。

不同的团队成员是否使用不同版本的Visual Studio?理想的策略是让每个人都使用相同版本的VisualStudio,即使这意味着您必须使用VS2005


我认为VS2008 MSDN许可证包括运行VS2005进行开发的权限,因此如果出于其他原因需要VS2008,您可以同时运行两个VS版本。

我建议您通过Jenkins等持续集成服务器进行构建。这将使您能够更深入地了解他们是否为您团队中的每个人成功构建,而不仅仅是您。。。问题是,他们在一家新公司工作时,仍能在当地编译出很好的代码,还不能做太多的更改。。。小步骤:每次我必须写一个for循环cringe@Shawn:告诉您的团队领导或经理或任何人,Stack Overflow上的好人希望提高您和团队其他成员的生产力: