使用 dotnet cli 编写任务
Writing tasks using dotnet cli
我的.net core应用越来越棒了,兄弟们都想用。我需要给他们一个安全的方法来获得项目 运行ning,以及一个添加发布任务的策略。
现在,感谢我在 and 中收到的帮助,我 运行 我的应用程序使用以下命令。
dotnet watch run --environment "Development"
如果我能让我的开发人员使用更直接的东西,我会很高兴,也许是 npm 脚本中的自定义任务:
dotnet run dev
我知道有基础设施可以通过 .csproj 文件中的 msbuild 来支持这种事情,但文档对我来说没有用。
Nodejs 具有惊人的 cli 和脚本功能,这就是我们在项目中用于 devops 工具的功能。
只需用脚本添加一个package.json:
{
scripts : {
start: "dotnet watch run --environment Development",
}
}
现在您可以使用以下方式启动您的应用程序:npm start
或:npm run start
,您可以根据需要添加大量脚本。
如果您希望开发人员有更多的选择自由,请查看 how to make a cli tool yourself. its very easy and i feel using a scripting language gives more freedom then using any msbuild/C# code tooling. and cli arguments parsing npm package。
这当然需要每个开发人员都安装节点。
我们在命令行中做了类似的事情:ourAppName start --watch --environment Development --config Debug
(当然这些是默认标志)。
使用 nodejs,您可以生成新进程并为这些进程提供新的环境变量,因此它很容易被覆盖,甚至 appsettings this way。
一种选择是使用 flubu(流利的生成器)。它是我们为使用 C# 代码构建项目和执行部署脚本而编写的开源 C# 库。
可在此处找到有关 flubu 的更多信息:
对于你的特殊情况,你必须写这样的东西:
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
执行脚本
您可以使用 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
我的.net core应用越来越棒了,兄弟们都想用。我需要给他们一个安全的方法来获得项目 运行ning,以及一个添加发布任务的策略。
现在,感谢我在
dotnet watch run --environment "Development"
如果我能让我的开发人员使用更直接的东西,我会很高兴,也许是 npm 脚本中的自定义任务:
dotnet run dev
我知道有基础设施可以通过 .csproj 文件中的 msbuild 来支持这种事情,但文档对我来说没有用。
Nodejs 具有惊人的 cli 和脚本功能,这就是我们在项目中用于 devops 工具的功能。
只需用脚本添加一个package.json:
{
scripts : {
start: "dotnet watch run --environment Development",
}
}
现在您可以使用以下方式启动您的应用程序:npm start
或:npm run start
,您可以根据需要添加大量脚本。
如果您希望开发人员有更多的选择自由,请查看 how to make a cli tool yourself. its very easy and i feel using a scripting language gives more freedom then using any msbuild/C# code tooling. and cli arguments parsing npm package。
这当然需要每个开发人员都安装节点。
我们在命令行中做了类似的事情:ourAppName start --watch --environment Development --config Debug
(当然这些是默认标志)。
使用 nodejs,您可以生成新进程并为这些进程提供新的环境变量,因此它很容易被覆盖,甚至 appsettings this way。
一种选择是使用 flubu(流利的生成器)。它是我们为使用 C# 代码构建项目和执行部署脚本而编写的开源 C# 库。
可在此处找到有关 flubu 的更多信息:
对于你的特殊情况,你必须写这样的东西:
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
您可以使用 dotnet CLI 调用 MSBuild。请参阅下面的示例任务 CopyTestJS
。我在 ubuntu.
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