我试图让 Octopack 包含一些不属于我的 Visual Studio 项目的额外 dll。
有没有办法让 Octopack 使用我的 csproj 文件(正常),然后只指定我需要的其他文件,而不是使用 nuspec.xml 中的部分。(因为那时我必须在我的 nuspec 中维护所有项目文件的列表)
我目前正在预构建事件中将一些共享库复制到文件夹“/providers”。有没有办法对此进行扩展以将它们复制到 Octopack 将看到并打包它们的地方?
我试图让 Octopack 包含一些不属于我的 Visual Studio 项目的额外 dll。
有没有办法让 Octopack 使用我的 csproj 文件(正常),然后只指定我需要的其他文件,而不是使用 nuspec.xml 中的部分。(因为那时我必须在我的 nuspec 中维护所有项目文件的列表)
我目前正在预构建事件中将一些共享库复制到文件夹“/providers”。有没有办法对此进行扩展以将它们复制到 Octopack 将看到并打包它们的地方?
您不需要在 nuspec 文件中维护所有项目文件的列表,您可以这样做:
<files>
<file src="MyProject.Website\**\*.*" target="" />
</files>
这将抓取您项目中的所有内容(所有文件和子目录)。如果这对您来说太多了,您可以利用排除规则:
<files>
<file src="MyProject.Website\**\*.*" target="" exclude="MyProject.Website\docs\admin.txt" />
</files>
希望有帮助。
通过 nuspec 获取项目目录中所有内容的答案的缺点是这可能包含您不想要的文件(请参阅答案的后续排除示例)。
一个可能更好的方法是确保在您的项目中将文件定义为“复制到 bin”或“复制为内容”,然后使用额外的命令行参数通过 msbuild w/Octopack 构建,/p:OctoPackEnforceAddingFiles=true
该参数告诉 OctoPack将 csproj 和 nuspec 结合起来,因此您不必使用通配符调用所有可能的路径,您只能在 nuspec 中包含未从常规构建过程中提取的文件。从 OctoPack 的 2.1.3 版本开始支持此功能。
您还可以通过仅指定您的 csproj 文件来使用常规 Nuget.exe 和 MSBuild,如果存在具有特定路径的 nuspec,则应将它们连接在一起。
有关更好的示例,请参阅这些参考链接。
https://getadigital.com/no/blogg/setting-up-your-project-and-teamcity-octopack-for-front-end-builds/