我正在尝试使用.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"/>