TeamCity: Не удалось обнаружить цель в проекте MSBuild

Думаю, у меня проблемы с заменой TeamCity MSBuild.

Я ' Я пытался скомпилировать проект Delphi 2010 (совместимый с MSBuild) с помощью NAnt, используя задачу MSBuild (NAnt Contrib).

Все работает нормально, если я делаю это без TeamCity на консоли.

Если я попробую это с TeamCity, Я получаю следующее сообщение об ошибке:

Failed to detect default target(s) in the project file  F:\CI\TeamCity\TeamCity\buildAgent\work\892195dab42324a3\build\src.temp\TestProject\Test.dproj.  Please define targets explicitly in the build configuration options on  TeamCity Web UI. Project does not define DefaultTargets or  InitialTargets.

Я пытался явно установить цель с помощью переключателя MSBuild / target, указывающего на цель Rebuild. Пока не повезло.

Есть предложения? Заранее спасибо.

Изменить:

    
        
            
                
            
        
        
            
                                 
            
        
    

Файл * .dproj - это стандартный файл проекта delphi 2010 (он преобразован с помощью xsl, но все еще действующий файл проекта)

Edit2:

Спасибо s. ermakovich, я заменил задачу msbuild (из NAnt contrib) на прямой вызов NAnt, который не выдает ошибку на сервере TeamCity. Похоже, TeamCity заменяет только вызов задачи NAnt contrib msbuild. : Основная проблема заключается в том, что я хочу добавить дополнительный столбец в отношение JoinTable для ManyToMany в JPA. В моем случае у меня есть следующие сущности. Тема ...

У меня есть следующая проблема, которую мне нужно решить. Основная проблема заключается в том, что я хочу добавить дополнительный столбец в отношение JoinTable для ManyToMany в JPA. В моем случае у меня есть следующие сущности.

Тема - это простая сущность, которая имеет множество RemoteDocument (на один RemoteDocument могут ссылаться многие темы, следовательно, это должно быть отношение ManyToMany). Кроме того, сущность RemoteDocument доступна только для чтения, поскольку ее можно читать только из Материализованного представления Oracle, более того, любое изменение этого Материализованного представления запрещено. Итак, я хочу сохранить порядок удаленных документов, связанных с некоторой темой. Фактически я могу сделать что-то подобное с дополнительной сущностью:

@Entity
public class Topic {
 @Id
 private Long id;
 @Basic
 private String name;

    @OneToMany
 private Set association;
}

@Entity
public class RemoteDocument {
 @Id
 private Long id;
 @Basic
 private String description;
}

@Entity
public class TopicToRemoteDocument {
 @OneToOne
 private Topic topic;
 @OneToOne
 private RemoteDocument remoteDocument;
 @Basic
 private Integer order;
}

В этом случае дополнительная сущность TopicToRemoteDocument помогает мне заменить ассоциацию ManyToMany на OneToMany и добавить дополнительный порядок полей. Я просто позволяю пользователю выбрать язык, создать соответствующий CultureInfo и установить:

Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;

В коде C # это работает нормально. Однако в элементах управления WPF культура по-прежнему является en-US. Это означает, например, что даты будут отображаться в формате США, а не в том, что является правильным для текущей культуры.

Очевидно, это не ошибка. Согласно MSDN и нескольким сообщениям в блогах и статьям о StackOverflow, язык WPF не следует автоматически текущей культуре. Пока вы не сделаете этого, он будет en-US:

FrameworkElement.LanguageProperty.OverrideMetadata(
    typeof(FrameworkElement),
    new FrameworkPropertyMetadata(
        XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag)));

См., Например, StringFormat Проблемы с локализацией в wpf .

Я не совсем понимаю, что здесь происходит. Кажется, что для свойства Language на всех элементах framework установлен текущий язык и региональные параметры. Во всяком случае, это работает. Я делаю это, когда приложение запускается, и теперь все элементы управления работают, как ожидалось, и, например, даты форматируются в соответствии с текущим языком и региональными параметрами.

Но теперь проблема: согласно MSDN FrameworkElement.LanguageProperty.OverrideMetadata может быть вызван только один раз. И действительно, если я вызову его снова (когда пользователь изменит язык), он выдаст исключение. Так что я действительно не решил свою проблему.

Вопрос: как я могу надежно обновить культуру в WPF более одного раза и в любое время в жизненном цикле моих приложений?

(Я обнаружил это при исследовании: http://www.nbdtech.com /Blog/archive/2009/03/18/getting-a-wpf-application-to-pick-up-the-correct-regional.aspx если я вызову его снова (когда пользователь изменит язык), он выдаст исключение. Так что я действительно не решил свою проблему.

Вопрос: как я могу надежно обновить культуру в WPF более одного раза и в любое время в жизненном цикле моих приложений?

(Я обнаружил это при исследовании: http://www.nbdtech.com /Blog/archive/2009/03/18/getting-a-wpf-application-to-pick-up-the-correct-regional.aspx если я вызову его снова (когда пользователь изменит язык), он выдаст исключение. Так что я действительно не решил свою проблему.

Вопрос: как я могу надежно обновить культуру в WPF более одного раза и в любое время в жизненном цикле моих приложений?

(Я обнаружил это при исследовании: http://www.nbdtech.com /Blog/archive/2009/03/18/getting-a-wpf-application-to-pick-up-the-correct-regional.aspx и вроде у него там что-то работает. Однако я не представляю, как это сделать в моем приложении. Похоже, мне пришлось бы обновить язык во всех открытых окнах и элементах управления и обновить все существующие привязки и т. Д.)

53
задан Community 23 May 2017 в 02:31
поделиться