软件频道>程序开发>JavaVBVCDelphiC/C++Web开发微软专栏移动数据库程序人生软件工程|开发客
您现在的位置: 天极网 > 开发频道 > 关于 vs2008 与 vs2005 的冲突问题
全文

关于 vs2008 与 vs2005 的冲突问题

2007-10-18 07:00作者:佚名出处:博客园责任编辑:幽灵

  在没有按照vs2008前开发的web程序安装了vs2008后(准确的说应该是Microsoft .NET Framework SDK v3.5),在编译时会有警告:警告 CS1701: 假定程序集引用“System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”与“System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”匹配,您可能需要提供运行时策略

  预编译完成。而且 在没有安装NET Framework SDK v3.5的服务器上会运行不了。

  Microsoft MSDN上对于该警告的帮助是这样提示的:

  1.   Visual C# 参考:错误和警告
  2.   编译器警告(等级 2)CS1701

  错误消息

  假定程序集引用“Assembly Name #1”与“Assembly Name #2”匹配,您可能需要提供运行时策略

  这两个程序集在发行号和/或版本号上有差异。为保证一致,必须在应用程序的 .config 文件中指定指令,并提供程序集的正确强名称,如以下代码示例所示。

  示例

  下面的多文件示例使用两个不同的外部别名引用一个程序集。第一个示例生成用于创建程序集 CS1701_d 的代码的较早版本。

以下是引用片段:
  // CS1701_a.cs
  // compile with: /target:library /out:cs1701_d.dll /keyfile:mykey.snk
  using System.Reflection;
  [assembly:AssemblyVersion("1.0")]
  public class A {
  public void M1() {}
  }
  public class C1 {}

  这是创建较新版本的程序集 CS1701_d 的代码。注意,由于这两个版本的输出文件同名,需要将较新版本编译到不同于较早版本的目录中。

以下是引用片段:
  // CS1701_b.cs
  // compile with: /target:library /out:c:\\cs1701_d.dll /keyfile:mykey.snk
  using System.Reflection;
  [assembly:AssemblyVersion("2.0")]
  public class A {
  public void M2() {}
  public void M1() {}
  }
  public class C2 {}
  public class C1 {}

  此示例设置外部别名 A1 和 A2。

以下是引用片段:
  // CS1701_c.cs
  // compile with: /target:library /reference:A2=c:\\cs1701_d.dll /reference:A1=cs1701_d.dll
  extern alias A1;
  extern alias A2;
  // using System;
  using a1 = A1::A;
  using a2 = A2::A;
  public class Ref {
  public static a1 A1() { return new a1(); }
  public static a2 A2() { return new a2(); }
  public static A1::C1 M1() { return new A1::C1(); }
  public static A2::C2 M2() { return new A2::C2(); }
  }

  此示例使用 A 的两个不同别名调用方法。下面的示例生成 CS1701。

以下是引用片段:
  // CS1701_d.cs
  // compile with: /reference:c:\\CS1701_d.dll /reference:CS1701_c.dll
  // CS1701 expected
  class Tester {
  public static void Main() {
  Ref.A1().M1();
  Ref.A2().M2();
  }
  }

  最终还是找到了解决该问题的方法,出现该问题主要是应该安装.net 3.5后,会自动默认安装3.5的来编译。你可以运行下面一段批处理文件

以下是引用片段:
@ECHO OFF
  ECHO Disabling publisher policy for System.Web.Extensions.IF EXIST %windir%\assembly\GAC_MSIL\policy.1.0.System.Web.Extensions\3.5.0.0__31bf3856ad364e35\policy.1.0.System.Web.Extensions.cfg ( REN %windir%\assembly\GAC_MSIL\policy.1.0.System.Web.Extensions\3.5.0.0__31bf3856ad364e35\policy.1.0.System.Web.Extensions.cfg policy.1.0.System.Web.Extensions.cfg.disabled IF ERRORLEVEL 1 ( ECHO On Windows Vista this script must be run as administrator. GOTO :END ))
  ECHO Disabling publisher policy for System.Web.Extensions.Design.IF EXIST %windir%\assembly\GAC_MSIL\policy.1.0.System.Web.Extensions.Design\3.5.0.0__31bf3856ad364e35\policy.1.0.System.Web.Extensions.Design.cfg ( REN %windir%\assembly\GAC_MSIL\policy.1.0.System.Web.Extensions.Design\3.5.0.0__31bf3856ad364e35\policy.1.0.System.Web.Extensions.Design.cfg policy.1.0.System.Web.Extensions.Design.cfg.disabled IF ERRORLEVEL 1 ( ECHO On Windows Vista this script must be run as administrator. GOTO :END ))
  :END

PAUSE

点击查看原文>>
相关搜索:
关注此文读者还看过
热门关注
特别推荐
文章排行
本周
本月
最近更新
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众