Должны ли проекты .NET 'Any CPU' связываться с библиотеками Framework или Framework64? - PullRequest
1 голос
/ 26 ноября 2008

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

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

1 Ответ

1 голос
/ 26 ноября 2008

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

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

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

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