C# 在C项目中运行一组脚本

C# 在C项目中运行一组脚本,c#,.net,scripting,continuous-integration,C#,.net,Scripting,Continuous Integration,我是一名web开发人员,即将进入C/.NET世界。在npm中,我通常在package.json文件中编写开发运行单元测试/本地服务器/编译所需的脚本。它易于访问,并且对CI/CD管道非常有用 我的问题是,在C/.NET中是否有类似的替代方案,或者是否有任何关于在何处以及如何存储开发/部署所需的这些脚本的行业标准 对于依赖项管理,使用paket 我不在一家以网络技术为核心业务的公司工作, 所以也许有更好的解决办法 但是,在.NET中,项目文件是使用生成引擎MSBuild生成的。 可以直接编辑项目文

我是一名web开发人员,即将进入C/.NET世界。在npm中,我通常在package.json文件中编写开发运行单元测试/本地服务器/编译所需的脚本。它易于访问,并且对CI/CD管道非常有用

我的问题是,在C/.NET中是否有类似的替代方案,或者是否有任何关于在何处以及如何存储开发/部署所需的这些脚本的行业标准


对于依赖项管理,使用paket

我不在一家以网络技术为核心业务的公司工作, 所以也许有更好的解决办法

但是,在.NET中,项目文件是使用生成引擎MSBuild生成的。 可以直接编辑项目文件并添加命令、复制文件等

例如,在project.csproj中,我添加了一个部分来自动化api文档swagger/openapi3:

  <!-- Enriches the swagger/openapi specification with documentation from xml -->
  <PropertyGroup>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
   </PropertyGroup>

  <!-- The following target generates the files according to the Nswag configuration file(s?) present in the project. -->
  <!-- NOTE do not use the project file in the nswag configuration when using NSwag.Build, this causes a Build loop, spawning a bunch of dotnet processes. Use the assembly! See: https://github.com/RicoSuter/NSwag/issues/1445-->
  <Target Name="NSwag" AfterTargets="Build">
    <Copy SourceFiles="@(ReferencePath)" DestinationFolder="$(OutDir)References" />
    <Message Text="Performing cmd: $(NSwagExe_Core30) run /variables:Configuration=$(Configuration),OutDir=$(OutDir) /runtime:NetCore30 /nobuild:true" />
    <Exec Command="$(NSwagExe_Core30) run /variables:Configuration=$(Configuration),OutDir=$(OutDir) /runtime:NetCore30 /nobuild:true" ConsoleToMSBuild="true" />
    <RemoveDir Directories="$(OutDir)References" />
  </Target>
</Project>
现在,我每次构建时都会运行这个。 也许您只希望在实际发布项目时运行某些操作?您可以通过发布配置文件来实现这一点:

此外,我们还有一个构建服务器,它可以为我们做很多这方面的工作。例如,我们不在每个构建上打包应用程序,但是除了各种其他任务外,构建服务器还使用构建后脚本来完成这项工作

为此,我们使用devops;

我认为这将是有帮助的,得到一个好主意,你想做什么时候,并选择相应的战略。
再一次-可能还有其他方法,但我们就是这样做的。

不使用nuget有特殊原因吗?我认为主要原因是nuget与可传递依赖项有关,所以当两个依赖项依赖于第三个依赖项的两个不同版本时,Nuget将只安装最新版本,忽略版本不匹配。显然,帕克特解决了这个问题。@Fildor,我和NuGet的问题的解决方案是什么?我猜差不多。我只是想知道为什么.Net世界中的go-to-packagemanager不是一个很好的匹配。我还没有讨论你所描述的情况,但我也认为这与这个问题无关。好的,我明白了。谢谢你的回复。