我有一个自定义命令行工具,它执行一些代码生成操作。基本上,它需要一个程序集作为输入,并通过反射搜索自定义属性,用于触发外部(JavaScript)文件的生成。
一切正常(几乎)很好,但工具的分发和执行有些混乱。我想将它打包为Nuget包(托管在私有存储库中),它基本上包含工具和应该触发工具执行的构建目标。
我该如何打包工具?我读到了特殊的Nuget tool
,content
和build
文件夹,我不知道在哪里放置什么,以及如何设置自定义目标。
我不知道问题是否“过于宽泛”,但即使我完全知道自己需要什么,我也会出现空白页面问题。
答案 0 :(得分:1)
在帖子构建操作中指定$(SolutionDir).nuget\nuget.exe pack $(ProjectPath) -IncludeReferencedProjects
。
您也可以指定nuspec文件。如此处所述https://docs.nuget.org/create/nuspec-reference。
例如:
<?xml version="1.0"?>
<package >
<metadata>
<id>SDK</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Initial release</releaseNotes>
<copyright>Copyright 2016</copyright>
<tags>SDK</tags>
</metadata>
<files>
<file src="tools\install.ps1" target="tools\install.ps1" />
</files>
</package>
答案 1 :(得分:1)
我会将该工具放入NuGet包内的构建目录中,然后在同一个构建目录中有一个自定义的MSBuild .targets文件。然后,这个MSBuild .targets文件将以这样的方式编写,以便在构建过程中的某个时刻调用它。
\build
\MyPackage.targets
然后您的构建目标文件insert itself将进入构建过程:
<PropertyGroup>
<BuildDependsOn>
$(BuildDependsOn);
MyCustomTarget
</BuildDependsOn>
</PropertyGroup>
<Target Name=“MyCustomTarget“>
<!-- Execute tool -->
</Target>
上面应该运行MyCustomTarget作为构建期间的最后一项。