Справочник по dll для Windows 7 x64 Edition и Visual Studio 2010

Раньше я использовал Visual Studio 2008. Затем я решил взять Windows 7 x64 и Visual Studio 2010, чтобы использовать новые функции IDE внутри нашего цикла разработки и т. д.

В одном из наших проектов используется Microsoft.SqlServer.Smo.dll, а также связанные с ним некоторые библиотеки DLL для управления SQL-сервером. У меня было много проблем, когда я пытался скомпилировать новые проекты.

Вот моя проблема.

  • Я создаю очень простой консольный проект, затем добавляю ссылку на 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, я изменил свойство Target framework проекта на .Net Framework 4 (не профиль клиента). Он успешно скомпилирован.

Когда я попытался изменить целевую структуру на .Net Framework 2.0, она выдает ошибку, которая

Ошибка 1. Тип или имя пространства имен «ApplicationRole» не существует в пространстве имен «Microsoft.SqlServer.Management.Smo» (у вас нет ссылки на сборку?) C:\Users\fatihy\documents\visual studio 2010\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs 14 52 ConsoleApplication2

Это небольшая ошибка, которая у меня есть, но я уверен, что другие связаны с этой проблемой.

Когда я проверил Microsoft.SqlServer.Smo.dll с помощью инструмента corflags, см. ниже,

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.

Пример проекта также можно загрузить здесь

Что я делаю неправильно?

Спасибо


person fyasar    schedule 15.09.2011    source источник
comment
Чтобы подтвердить - из того, что я вижу в выходных данных DLL, поддерживается версия 2.0.50727. Эту версию также обычно называют .Net 3.5. Когда вы говорите, что меняете целевую платформу на версию 2.0, вы имеете в виду актуальную версию 2.0 или сокращенный псевдоним версии 3.5 2.0.50727?   -  person Smudge202    schedule 15.09.2011
comment
Изменение целевой платформы с профиля клиента на полную версию обычно решает проблему такого рода.   -  person Hans Passant    schedule 15.09.2011


Ответы (1)


Microsoft.SqlServer.Smo.dll встроен в .Net 3.5. Вы просто не можете использовать его, если вашей целевой средой для проекта является .Net Framework 2.0.

Только что проверил это в приложении демо-консоли.

person Maxim V. Pavlov    schedule 15.09.2011