使用dotnet cli编写任务

时间:2017-04-21 06:46:20

标签: asp.net-core msbuild .net-core dotnet-cli

我的.net核心应用程序变得惊人,所有兄弟都希望使用它。我需要给他们一个安全的方法来让项目运行,以及在未来添加发布任务的策略。

现在,感谢我在this questionthis question收到的帮助,我使用以下命令运行我的应用程序。

dotnet watch run --environment "Development"

如果我可以让我的开发人员使用更直接的东西,也许是一个自定义任务,那么我会喜欢它:npm脚本:

dotnet run dev

我知道有一些基础设施可以通过.csproj文件中的msbuild支持这种事情,但文档并没有为我提供帮助。

3 个答案:

答案 0 :(得分:2)

一种选择是使用flubu(流利的建设者)。它是我们为使用C#代码构建项目和执行部署脚本而编写的开源C#库。

有关flubu的更多信息,请访问:choice-for-build-tool-msbuild-nant-or-something-else

对于您的特定情况,您必须写下这样的内容:

public class BuildScript : DefaultBuildScript
{
    protected override void ConfigureTargets(ITaskContext session)
    {
        context.CreateTarget("run.dev")
                .AddCoreTask(x => x.Restore()) //// Optional to restore cli tool watch
                .AddCoreTask(x => x.ExecuteDotnetTask("watch")
                    .WithArguments("run")
                    .WithArguments("--enviroment", "Development"));
    }
}

然后运行脚本,您将执行命令:dotnet flubu run.dev

更新

您还可以添加到目标:.SetAsDefault()

然后您可以使用命令dotnet flubu

执行脚本

答案 1 :(得分:1)

Nodejs具有惊人的cli和脚本功能,这就是我们在devops工具项目中使用的功能。

只需使用脚本添加package.json:

{
  scripts : {
    start: "dotnet watch run --environment Development",
  }
}

现在,您可以使用:npm start或:npm run start启动应用,如果需要,可以添加大量脚本。

如果您希望开发人员有更多自由选择how to make a cli tool自己查看。它非常简单,我觉得使用脚本语言比使用任何msbuild / C#代码工具更自由。和cli arguments parsing npm package

这个过程需要每个开发人员安装节点。

我们在命令行中执行了类似的操作:ourAppName start --watch --environment Development --config Debug(这些是默认标志)。 使用nodejs,您可以生成新进程并为这些进程提供新的环境变量,因此很容易覆盖,甚至appsettings this way

答案 2 :(得分:0)

您可以使用 dotnet CLI 调用 MSBuild。请参阅下面的示例任务 CopyTestJS。我在 ubuntu 上使用 dotnet cli 版本 5.0.301

    <Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.3" />
        <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.1" />
    </ItemGroup>

    <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.1" />
    </ItemGroup>

    <ItemGroup>
        <Folder Include="wwwroot" />
    </ItemGroup>

    <!-- Example Custom Target -->
    <Target Name="CopyTestJS">
        <Copy SourceFiles="test.js" DestinationFolder="wwwroot" />
    </Target>

    </Project>

您可以使用 dotnet CLI 运行任务。

dotnet msbuild -target:CopyTestJS