Должны ли проекты .NET 'Any CPU' привязываться к библиотекам DLL Framework или Framework64?

StackOverflow https://stackoverflow.com/questions/319585

Вопрос

У меня есть проект C # Visual Studio (.csproj), в котором есть ссылка на версию Framework64 System.Data.Когда я пытаюсь создать, используя MSBuild/Сервер Team Foundation Server (TFS) на другом компьютере происходит сбой, поскольку 64-разрядная библиотека DLL не существует.

Должен ли я привязываться к версии Framework, или это ограничит меня при работе на 64-разрядных машинах?Перенаправляет ли .NET привязку на использование 64-разрядной версии, когда это возможно?

Это было полезно?

Решение

Я думаю, ты имеешь в виду Любой процессор в вашем вопросе все верно?Предполагая, что это так, привязка без учета разрядности - это правильный путь практически при любых обстоятельствах.

Вспомните , что .NET код - это Взволнованный (Just In Time скомпилирован) - имеется в виду 32-битный и 64-битный код из C # или VB.NET компилятор один и тот же, независимо от того, на какой архитектуре вы планируете работать.Когда код запускается во время выполнения, именно тогда он становится 32 или 64-разрядным.

В некоторых ситуациях вам действительно нужно учитывать целевую архитектуру.Одним конкретным случаем были бы любые ссылки / зависимости на КОМ-библиотеки DLL-оболочек, поставляемые .NET Framework или иным образом.Это означает, что эти DLL-файлы будут помечены (в случае COM) как 32-разрядные (поскольку COM - это 32-разрядная архитектура), если бы они не были помечены как 32-разрядные, взаимодействие с COM не функционировало бы.Следовательно, поскольку они явно помечены, результаты вашего проекта также должны быть помечены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top