【发布时间】:2011-09-15 15:59:01
【问题描述】:
我曾经使用 Visual Studio 2008。然后我决定采用 Windows 7 x64 和 Visual Studio 2010 在我们的开发周期等中使用新的 IDE 功能。
我们的一个项目正在使用 Microsoft.SqlServer.Smo.dll 和相关的一些 SQL 服务器管理 DLL。当我尝试编译新项目时遇到了很多问题。
这是我的问题。
-
我创建了一个非常简单的控制台项目,然后我添加了 Microsoft.SqlServer.Smo.dll 引用,并在 main() 函数中添加了一个简单的下一行。
static void Main(string[] args) { Microsoft.SqlServer.Management.Smo.ApplicationRole role = new Microsoft.SqlServer.Management.Smo.ApplicationRole(); }
ApplicationRole 类来自 Microsoft.SqlServer.Smo.dll,我将项目的目标框架属性更改为 .Net Framework 4(不是客户端配置文件)。它编译成功。
当我尝试将目标框架更改为 .Net Framework 2.0 时,它给出的错误是
错误 1 命名空间“Microsoft.SqlServer.Management.Smo”中不存在类型或命名空间名称“ApplicationRole”(您是否缺少程序集引用?)C:\Users\fatihy\文档\visual studio 2010\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs 14 52 ConsoleApplication2
这是我遇到的小错误,但我确信其他人与此问题有关。
当我使用 corflags 工具检查 Microsoft.SqlServer.Smo.dll 时,如下所示,
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>corflags "C:\Program File
s\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Smo.dll"
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 9
ILONLY : 1
32BIT : 0
Signed : 1
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>
如您所见,此 dll 支持 .net 2.0 CRL。
示例项目也可以从here下载
我做错了什么?
谢谢
【问题讨论】:
-
确认 - 从我可以看到的 DLL 输出中,支持的版本是“2.0.50727”。此版本通常也称为 .Net 3.5。当您说您将目标框架更改为 v2.0 时,您是指实际版本“2.0”,还是您将 v3.5 的别名缩写为“2.0.50727”?
-
将目标平台从客户端配置文件更改为完整版通常可以解决此类问题。
标签: .net visual-studio-2010 .net-4.0 corflags