Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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# 如何让开发人员在VS2008 target.net 2.0(而不是service pack)上避免运行时崩溃?_C#_.net_Visual Studio 2008_Runtime_Target - Fatal编程技术网

C# 如何让开发人员在VS2008 target.net 2.0(而不是service pack)上避免运行时崩溃?

C# 如何让开发人员在VS2008 target.net 2.0(而不是service pack)上避免运行时崩溃?,c#,.net,visual-studio-2008,runtime,target,C#,.net,Visual Studio 2008,Runtime,Target,所以,我想把我的开发团队升级到VS2008。作为一个企业,我们还没有推出3.5运行时 从一些阅读资料来看,似乎安装VS2008会自动为您提供.NET2.0SP1,它有一些新的API,当您以2.0运行时为目标时,它将采用2.0SP1 但是,如果SP1没有向我们的用户推出,这将导致运行时中断 是否有VS目标dotnet 2.0(而不是SP1) 有没有其他解决方案可以让开发人员不用在本地编译和运行良好,但在生产中崩溃的API 我看到fxcop对此进行了检查,但必须有一个更简单的解决方案来解决这个问题。

所以,我想把我的开发团队升级到VS2008。作为一个企业,我们还没有推出3.5运行时

从一些阅读资料来看,似乎安装VS2008会自动为您提供.NET2.0SP1,它有一些新的API,当您以2.0运行时为目标时,它将采用2.0SP1

但是,如果SP1没有向我们的用户推出,这将导致运行时中断

  • 是否有VS目标dotnet 2.0(而不是SP1)
  • 有没有其他解决方案可以让开发人员不用在本地编译和运行良好,但在生产中崩溃的API

  • 我看到fxcop对此进行了检查,但必须有一个更简单的解决方案来解决这个问题。

    这可能很难,也可能很容易。我们走了两条路线:

  • 简单的方法是:建立一个只安装了.NET2.0的构建服务器。自动化构建以在签入时运行(我们使用CruiseControl.Net)。您必须在命令提示符下使用MSBuild来生成项目

  • 对于安装了3.5的计算机,即使从.Net 2.0 framework目录运行MSBuild,也会替换许多MSBuild工具。为了避免这种情况,您必须创建一个仅强制继续使用.Net 2.0运行时的应用程序。这并不容易。我们直接加载项目并使用Microsoft.build.*框架调用构建。光靠这一点还不够。必须固定要在.config文件中使用的程序集:

    ... 发射型计算机断层扫描仪。。。

  • 顺便说一句,在VS2008中新创建的项目需要一个名为“MSBuildToolsPath”的属性,但必须对该属性进行定义,您可能对此有问题。如果使用MSBuild,则可以在命令行上定义,如果使用第二个选项,则可以通过编程方式指定:

    engine.GlobalProperties.SetProperty( "MSBuildToolsPath", msbuildPath );
    

    也许这本书值得一看。但我不确定这是否有帮助。

    您的第一个建议不会有帮助,因为SP1不兼容会导致运行时缺少MethodException。而且在编译时,如果构建服务器没有安装SP1,这些方法也不会存在。正如Adam评论的那样,您没有在构建服务器上安装SP1这一事实就是这种方法有效的原因。事实上,我们也没有在构建服务器上安装VStudio。这使我们的构建服务器尽可能靠近最终用户环境。