我的.net核心应用程序变得惊人,所有兄弟都希望使用它。我需要给他们一个安全的方法来让项目运行,以及在未来添加发布任务的策略。
现在,感谢我在this question和this question收到的帮助,我使用以下命令运行我的应用程序。
dotnet watch run --environment "Development"
如果我可以让我的开发人员使用更直接的东西,也许是一个自定义任务,那么我会喜欢它:npm脚本:
dotnet run dev
我知道有一些基础设施可以通过.csproj文件中的msbuild支持这种事情,但文档并没有为我提供帮助。
答案 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