Подтвердить что ты не робот

Управление проектами С# с Maven

У кого-нибудь был опыт управления проектами на С# с Maven?

Если да, скажите мне несколько слов об этом, как странно было бы создать такую ​​настройку.

Спасибо

4b9b3361

Ответ 1

Maven является агностиком языка, и его можно использовать с другими языками, кроме Java, включая С#. Например, Maven Compiler Plugin можно настроить для использования csharp. Существует также .NET Maven plugin и был maven-csharp на javaforge.com(кажется мертвым).

Но Java получает наибольшее внимание и человеческую силу, и с другими языками не так много сделано. Таким образом, при использовании Maven с С# теоретически возможно, я бы не ожидал большой поддержки и обратной связи от сообщества (то есть в случае проблемы вы останетесь в одиночестве). Я не знаю, будет ли использование Maven для С# хорошей идеей. Я бы не рекомендовал это на самом деле (возможно, я ошибаюсь).

Ответ 2

Я работаю с набором С# и С++ компонентов и приложений, которые управляются зависимостями через maven. Общее правило: "Если это можно сделать с помощью командной строки, это может быть сделано в maven", значит, у нас есть много .bat,.exe и powershell "glue", чтобы все комбинации играли вместе.

Самая большая проблема с использованием maven для стека Microsoft - полное отсутствие знакомства с циклом сборки/развертывания/ALM для ЛЮБОГО нового разработчика. Вы можете найти много разработчиков с MSBuild, TFSBuild, ANT и т.д., Но это редкая вещь, чтобы найти разработчика С# или С++, который работал с maven в чистом магазине Microsoft. Внедрение maven для управления зависимостями и процесса сборки, следовательно, чрезвычайно сложно, поскольку вы в конечном итоге тратите много разработчиков времени обучения (какая разница между моментальным снимком и выпуском?), Чрезмерно-компонентный продукт, а затем масштабируя его, чтобы получить это правильно и т.д.

Я также обнаружил, что нам нужно было работать над maven, чтобы сделать что-то похожее на непрерывную интеграцию и непрерывную доставку. Около 70% нашего технологического стека - это С# (остальное - С++), и мы хотим развернуть большую часть этого на серверах QA каждую ночь с самым последним и самым лучшим кодом по умолчанию. Чтобы сбалансировать стоимость сборки релиза и производительности dev файлов через моментальные снимки, мы завершили процесс сборки, в котором каждую ночь мы создаем сборку каждого компонента, а за ней следует сборка моментальных снимков. Это позволяет разработчикам не беспокоиться о том, чтобы натыкаться на POM, чтобы использовать снимки утром. В целом, это королевская боль, по крайней мере, для тех, кто прибывает из надежной непрерывной интеграции, "строить и развертывать все".

Maven имеет много обещаний для управления зависимостями и изоляции изменений (особенно в компонентах интерфейса, где потребитель и производитель должны согласиться). Эти проблемы были решены другими способами (svn externs, сборка развертывания, управление версиями интерфейса и т.д.). Но относительно удобно загружать любой компонент, запускать "mvn compile" и видеть компиляцию кода (предполагая базовый уровень мобильности сборки). Для меня, однако, накладные расходы и мета-разговоры о правильном построении (в отличие от фокусировки на ценности клиента) сводят к минимуму значение maven в целом.

Ответ 3

Вы также можете проверить NPanday (это проект, в котором я участвую). Хотя по-прежнему требуется некоторая работа, чтобы более точно соответствовать передовой практике Maven, она является наиболее полной и активной альтернативой, доступной сейчас. Уникальной особенностью является наличие надстройки Visual Studio для создания правильного pom.xml из среды IDE.

Ответ 4

Для .NET Core вы можете использовать dotnet-maven-plugin, который управляет командами dotnet и nuget, а также добавляет поддержку, например очистки, отпускания и т.д. в режиме "Maven".

Здесь приведен пример конфигурации плагина:

<project>
  [...]
  <packaging>dotnet</packaging>

  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.eobjects.build</groupId>
        <artifactId>dotnet-maven-plugin</artifactId>
        <version>0.11</version>
        <extensions>true</extensions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

(Обратите внимание, что тип упаковки установлен в dotnet).

Затем он будет считываться из файла project.json и запускает команды dotnet и nuget в соответствии с фазами жизненного цикла maven, такими как очистка, компиляция, тестирование, установка и т.д.

Ответ 6

maven-compiler-plugin с plexus-compiler-csharp отлично работает со следующей конфигурацией. Конечно, вы должны указать на фактический компилятор С# на вашем компьютере с параметром "executable".

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <compilerId>csharp</compilerId>
        <fork>true</fork>
        <executable>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe</executable>
        <outputFileName>myDLL</outputFileName>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-compiler-csharp</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
</plugin>