Независимость от платформы .NET bitness - от ОС или вызывающего приложения? - PullRequest
1 голос
/ 16 февраля 2009

Я знаю, что независимые от платформы .NET-приложения «всплывают» в разряд операционной системы. Но как насчет сборки .NET, которая представляет собой библиотеку, а не исполняемый файл, вызываемый из приложения, отличного от .NET?

У нас есть .NET DLL, которая представляет собой расширенную хранимую процедуру CLR для SQL Server 2005. В настоящее время она не зависит от платформы. Что происходит, когда расширенная хранимая процедура вызывается из 32-битного экземпляра SQL Server, работающего в 64-битной Windows?

1 Ответ

1 голос
/ 16 февраля 2009

Это зависит от цели, для которой была скомпилирована сборка. Если вы выбрали «Любой процессор» или «x86» в опциях сборки проекта, DLL должна работать как 32-битный экземпляр. Если вы выбрали «x64», он выдаст исключение (BadImageFormatException из памяти).

В Windows 32-разрядные процессы не могут загружать 64-разрядные библиотеки DLL, поэтому SQL Server будет запускать 32-разрядную версию среды выполнения .net внутри своего процесса. Таким образом, ваша сборка .net также будет работать как 32-разрядная даже на 64-разрядной машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...