2013-09-08 2 views
2

Когда Configuration Manager (или соответствующие окна на панели инструментов) имеет x64Release и свойства сборки имеет x86Debug (без 'Active') и F5 щелкают - VS следует Configuration Manager. Итак, что такое свойства Build для?Менеджер конфигурации Vs. Особенности сборки

Edit:

Это всегда определяет действие:

enter image description here

Это никогда не делает , даже если он не установлен на 'Активный':

enter image description here

Проверено со следующим кодом:

 public Form1() 
     { 
      InitializeComponent(); 
#if (DEBUG) 
      Text = "DEBUG"; 
#else 
      Text = "Release"; 
#endif 
      Text += Environment.Is64BitProcess; 
     } 

С Configuration Manager установлен для отладки + x86 (несмотря на будучи 64 компьютера), и язычок сборки в свойствах проекта выпустить + x64 (не «активный») , В результате получилось: «DEBUGfalse».

Итак, каков последний (вкладка «Сборка»)?

ответ

3

Он просто позволяет вам пропустить создание проекта в этой конкретной конфигурации, сняв его. Необходимо, если проект не может или не должен быть построен в этой конфигурации. Это довольно редкая вещь, но может быть полезна, если, скажем, вы хотите создать установщик в сборке Release или создать проект, который не может быть сконфигурирован в конфигурации.

Понятие о наличии отдельных платформ важно для неуправляемого кода, очень незначительного для управляемого кода. Поскольку управляемый код, естественно, не обращает внимания на целевую архитектуру, джиттер заботится об этом во время выполнения. Название платформы также не имеет ничего общего с архитектурой, в которой может работать программа, единственным параметром, который имеет значение, является Project + Properties, вкладка Build, целевая настройка платформы. И только для проекта EXE. Наличие несоответствия между этим параметром и именем платформы решения сильно смущает пользователей VS2010.

Единственная разумная настройка для управляемого решения состоит в том, чтобы иметь только одну платформу решения с именем AnyCPU. Как это было сделано в версиях VS до VS2010. Вы когда-либо рассматривали возможность добавления платформ при создании неуправляемого кода.

+0

Спасибо. Я предполагаю, что ваш первый абзац говорит о Configuration Manager ('Build' не имеет флажка для его отключения). 'Единственная настройка, которая имеет значение, это Project + Properties, Build tab' - на самом деле, как я писал - Visual Studio следует за Configuration Manager, а не с вкладкой Build. (Я пробовал это с помощью простого проекта, который использовал '#if (DEBUG)' и 'Environment.Is64BitProcess'. – ispiro

+0

' управляемый код, естественно, не обращает внимания на целевую архитектуру'. Я предполагаю, что вы имели в виду, что 'Любой CPU' будет работать на обоих , а не то, что это действительно неудовлетворительно, потому что причина, по которой я использовал другую платформу, заключается в том, что Ngen не работал в 'Any CPU' или на' x64' (как в моем другом вопросе, который вы ответили) - и переходе на 'x86' решил, что. – ispiro

+0

Нет, имеет значение только настройка целевой платформы. У разных конфигураций могут быть разные настройки для этой опции, вы можете получить ее правильно случайно.Все это не относится к ngen, версия, которую вы запускаете, определяет, для какой архитектуры она генерирует собственные изображения. Пока ваш проект EXE представляет собой AnyCPU, 64-разрядная версия ngen.exe будет генерировать правильные собственные изображения на 64-битной машине. Если по какой-то причине он вынужден на x86, вы должны использовать 32-разрядную версию ngen.exe. –

Смежные вопросы