我有一个Visual Studio解决方案,我正试图用它来制作模板。我有一个包含template.json
文件的.template.config
目录,还有一个SolutionTemplate.nuspec
。我正在尝试制作一个 solution 模板,即该模板创建一个包含多个项目的解决方案。目录结构为:
- .git
- .template.config
- template.json
- template_content
- proj_one_dir
- files
- proj_two_dir
- files
- Template.sln
- SolutionTemplate.nuspec
- pipeline.yml
template.json
的源代码部分为:
{
"sources":[{
"modifiers": [{
"exclude":[
"**/[Bb]in/**",
"**/[Oo]bj/**",
".template.config/**/*",
"**/*.filelist",
"**/*.user",
"**/*.lock.json",
".git/**"
]
}],
"source": "./template_content",
"target": "./"
}]
}
如您所见,我试图阻止git和template config目录等内容包含在输出中。
.nuspec文件内容为:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>Our.Microservice.Template</id>
<version>1.0.0</version>
<description>
Blah blah blah.
</description>
<authors>Me</authors>
<license type="expression">Apache-2.0</license>
<packageTypes>
<packageType name="Template" />
</packageTypes>
</metadata>
</package>
如果我运行nuget.exe pack "SolutionTemplate.nuspec"
,那么当我使用模板时,最终输出只包括 * 所有内容 *。
<files>
<file src="template_content\**\*.*"
exclude="**\bin\**\*.*;**\obj\**\*.*;**\*.nuspec;**\*.nupkg;**\*.suo;docs\**;.git\**;**\.gitignore;.vs\**;.vscode\**;"
/>
</files>
这看起来确实有效。但是如果这是控制包含/排除哪些文件的预期方式,那么template.json
中的源代码部分是做什么的呢?
挑选最终作为模板内容的文件的正确方法是什么?
1条答案
按热度按时间2ic8powd1#
我已经自己找到了答案。
我没有真正意识到这个过程有两个阶段。
1.将文件打包到Nuget包中
1.使用模板(在某种程度上,提取Nuget的内容)
为了控制进入Nuget包的内容,我们使用
YourNuspecFile.nuspec
中的<files>
部分。为了控制如何使用Nuget包中的文件生成最终结果,我们使用
template.json
的"sources":
部分。我没有找到任何文件明确指出这一点,这对许多人来说可能是显而易见的,但我设法在脑海中将两者混为一谈。
我也意识到我的json没有意义。
下面是我的.nuspec文件的files部分:
下面是我的'template.json'的源代码部分:
正如您所看到的,我已经在.nuspec文件中进行了一些重命名,但我知道这些也可以在
template.json
文件中完成(需要更多的学习)。