使用Maven进行C#项目管理

Rom*_*man 22 c# maven-2

有没有人有使用Maven管理基于C#的项目的经验?

如果是的话,请告诉我一些关于它的话,创建这样的设置有多奇怪.

谢谢

Pas*_*ent 26

Maven与语言无关,应该可以将它与Java之外的其他语言一起使用,包括C#.例如,可以将Maven编译器插件配置为使用csharp编译器.还有一个.NET Maven插件,javaforge.com上有一个maven-csharp(似乎已经死了).

但是Java受到了最多的关注和人力,而其他语言并没有做太多.因此,虽然在理论上使用Maven和C#是可能的,但我不希望社区提供太多的支持和反馈(即如果出现问题,你将独自一人).我不知道是否使用Maven for C#是个好主意.我实际上不推荐它(当然我可能是错的).


mca*_*ing 15

我使用一套C#和C++组件以及通过maven依赖管理的应用程序.一般规则"如果它可以通过命令行完成,它可以在maven中完成"持有,所以我们最终有很多.bat,.exe和powershell"粘合"来让所有部分一起玩.

将maven用于Microsoft堆栈的最大问题是完全不熟悉任何新开发人员的构建/部署/ ALM周期.您可以找到许多具有MSBuild,TFSBuild,ANT等经验的开发人员,但是在纯粹的微软商店中找到与maven合作的C#或C++开发人员是一件罕见的事情.因此,推出依赖管理和构建过程的maven是非常困难的,因为你最终花了很多时间培训开发人员(快照和发布之间有什么区别?),过度组件化产品然后缩小它以获得它是正确的等等

我还发现,我们必须围绕maven工作,做一些类似于持续集成和持续交付的事情.我们大约70%的技术堆栈是C#(其余的是C++),我们希望每晚都使用最新和最好的代码将大部分技术部署到QA服务器上.为了通过快照平衡发布版本与开发生产力的价值,我们最终构建了一个构建过程,我们每晚创建每个组件的发布版本,然后创建快照.这让开发人员不必担心在早上碰到POM以消耗快照.总的来说,这是一个皇家的痛苦,至少对于来自强大的持续集成,"构建和部署一切"环境的人来说.

Maven对依赖管理和隔离突破性变更有很大的希望(特别是在消费者和生产者必须同意的界面组件中).这些问题已经通过其他方式解决(svn externs,部署版本,界面版本管理等).但下载任何组件,运行"mvn compile",并查看代码编译(假设基本级别的构建可移植性)相对比较好.但对我来说,关于获得正确构建的开销和元对话(而不是关注客户价值)可以最大限度地降低整个maven的价值.


Kas*_*sen 6

对于.NET Core,您可以使用dotnet-maven-plugin来驱动dotnetnuget命令,并在"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>
Run Code Online (Sandbox Code Playgroud)

(注意包装类型设置为dotnet).

然后,这将从project.json文件中读取并根据maven生命周期阶段运行dotnet和nuget命令,例如清理,编译,测试,安装等.