我正在尝试使用.nuspec <files> elements将一系列Razor View 收集到NuGet包中。我的项目结构是非标准的,但是由于我不愿讨论的原因,我无法更改它。

这是我的项目结构:

* Project
  * Bar
     * code
         * Bar.csproj <-- OctoPack initiated from here
         * Views
             * Bar
                 * View1.cshtml
                 * View2.cshtml
  * Baz
     * code
         * Views
             * Baz
                 * View3.cshtml
                 * View4.cshtml
  * Qux
     * code
         * Views
             * Qux
                 * View5.cshtml
                 * View6.cshtml

...这就是我的追求:

所需结果
* Views
    * Bar
        * View1.cshtml
        * View2.cshtml
    * Baz
        * View3.cshtml
        * View4.cshtml
    * Qux
        * View5.cshtml
        * View6.cshtml

这是我尝试过的:

尝试#1
<file src="..\..\..\Project\*\code\Views\**\*.cshtml" target="Views" />

奇怪的是,单个通配符成为递归的起点,导致:
* Views
    * Bar
        * code
            * Views
                * View1.cshtml
                * View2.cshtml
    * Baz
        * code
            * Views
                * View3.cshtml
                * View4.cshtml
    ...

尝试#2
<file src="..\..\..\Project\**\code\Views\**\*.cshtml" target="Views" />

产生与#1相同的结果

尝试#3
<file src="..\..\..\Project\*\code\Views\*\*.cshtml" target="Views" />

结果如下:
* Views
    * View1.cshtml
    * View2.cshtml
    * View3.cshtml
    * View4.cshtml
    * View5.cshtml
    * View6.cshtml

最佳答案

如果要使用Octopack构建sln文件,则将需要3个nuspec文件,这些文件的名称与csprojectfilename.nuspec相同。

该部分必须如下所示

Bar.nuspec(与Bar.csproj处于同一文件夹级别)

<file src="obj\Release\Package\PackageTmp\bin\Views\bar\*.cshtml"     target="Views\Bar"/>

Baz.nuspec(与Baz.csproj相同的文件夹级别)
<file src="obj\Release\Package\PackageTmp\bin\Views\baz\*.cshtml"     target="Views\Baz"/>

Qux.nuspec(与Qux.csproj相同的文件夹级别)
<file src="obj\Release\Package\PackageTmp\bin\Views\qux\*.cshtml"     target="Views\Qux"/>

将有3个nuget程序包。

或(不带octopack)

如果要使用一个nuget软件包执行此操作,则应手动使用nuget.exe和软件包。
"C:\Scripts\Nuget.exe" pack %WORKSPACE%\Allfilesources.nuspec -OutputDirectory "%2" -BasePath "%3" -version %4

Allfilesources.nuspec
<file src="C:\CustomPack\obj\Release\Package\PackageTmp\bin\Views\bar\*.cshtml"     target="Views\Bar"/>
<file src="C:\CustomPack\obj\Release\Package\PackageTmp\bin\Views\baz\*.cshtml"     target="Views\Baz"/>
<file src="C:\CustomPack\obj\Release\Package\PackageTmp\bin\Views\qux\*.cshtml"     target="Views\Qux"/>

08-26 23:42