Делает Msbuild, распознают любые конфигурации сборки кроме DEBUG|RELEASE

FXMLLoader создает экземпляры типов посредством отражения. Это означает, что у класса должен быть либо конструктор, параметры которого помечены @NamedArg , либо конструктор с нулевыми параметрами. @NamedArg решает проблему имен параметров, которые не обязательно сохраняются в байтовом коде, как лучше объяснено в в этом ответе . Остальные атрибуты будут установлены на объекте в соответствии с правилами, указанными в этого раздела из Введение в FXML . Подводя итог, можно сказать, что атрибут / элемент FXML должен иметь соответствующий установщик свойств, свойство только для чтения List или свойство только для чтения Map в целевом классе.

Что все это значит для вашего вопроса:

  1. Это зависит от реализации StringConverter.
    • Он должен иметь конструктор без аргументов или иметь @NamedArg аннотированные параметры конструктора.
  2. Это зависит от объекта, на котором вы устанавливаете StringConverter.
    • Он должен иметь соответственно аннотированный параметр конструктора или свойство должно иметь установщик. В противном случае загрузчик FXML не будет знать, как настроить конвертер.

Глядя на исходный код, не похоже, что ни одна из реализаций StringConverter использует аннотацию @NamedArg. Однако они часто предоставляют конструктор без аргументов. Это позволит вам использовать их, но вы можете потерять возможность их настройки. Например, при использовании LocalDateStringConverter вы не сможете настроить формат.

Тем не менее, вы всегда можете создать фабричный класс и использовать fx:factory в файле FXML.

public class Converters {

    public static StringConverter myAwesomeConverter() {
        DateTimeFormatter formatter = ...;
        return new LocalDateStringConverter(formatter, formatter);
    }

}

    
        
    

Или, если вам не нужен пользовательский форматер, вы можете просто использовать конструктор без аргументов конвертера.


    
        
    

21
задан Michael Mrozek 28 July 2010 в 02:10
поделиться

3 ответа

Я не сделал многого с определением конфигурационного файла MSBUILD, но я сделал сборки различных конфигураций с помощью пакетного файла как это

msbuild /v:n /p:Configuration=Release "Capture.sln" 
msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln" 

, я определил конфигурация ReleaseNoUploads в Visual Studio.

Вот то, что я должен был сделать для того (это - Visual Studio 2005):

  • Открываются меню Tools:Options, перейдите в опция Projects и Solutions:General и проверьте , Шоу усовершенствовало конфигурации сборки .
  • Оттуда, перейдите в меню
  • Build:Configuration Manager В диалоговом окне, которое открывается, нажмите Активная конфигурация решения выпадающий и нажмите < Новый...> для создания новой конфигурации сборки.
42
ответ дан 29 November 2019 в 19:59
поделиться

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

, Как условно развернуть app.config на основе конфигурации сборки?

5
ответ дан 29 November 2019 в 19:59
поделиться

Обратите внимание на это, когда 'в Visual Studio', $ (Конфигурация) и $ (Платформа) будут всегда устанавливаться VS с помощью материала Менеджера конфигурации в раскрытии наверху. Принимая во внимание, что, если Вы хотите установить эти значения с помощью msbuild из командной строки, необходимо передать в значениях явно (как в ответе @MarkBiek).

(Большинство шаблонов проекта VS 'примет значение по умолчанию в' значении для Конфигурации/Платформы, так, чтобы можно было использовать командную строку MSBuild, не определяя эти значения явно. Это хорошо, но заставляет эти две полезной / общей собственности казаться немного более волшебной/странной, чем они на самом деле.)

2
ответ дан 29 November 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: