NuGet не копирует содержимое и не запускает install.ps1.

Я пытаюсь создать пакет Nuget, используя NuGet.exe 1.2.20311.3 и следующую спецификацию:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata>
    <id>SharedWebsitesMvc</id>
    <version>1.0.16</version>
<authors>Ted</authors>
<owners>Ted</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Shared Websites Mvc Library</description>
    <frameworkAssemblies>
        <frameworkAssembly assemblyName="mscorlib" targetFramework=".NETFramework4.6" />
        <frameworkAssembly assemblyName="System" targetFramework=".NETFramework4.6" />
        <frameworkAssembly assemblyName="System.Core" targetFramework=".NETFramework4.6" />
        <frameworkAssembly assemblyName="Microsoft.CSharp" targetFramework=".NETFramework4.6" />
    </frameworkAssemblies>
</metadata>
<files>
    <file src="D:\Projects\Websites\SharedWebsitesMvc.dll" target="lib\net46\SharedWebsitesMvc.dll" />
    <file src="D:\Projects\Websites\SharedWebsitesMvc.xml" target="lib\net46\SharedWebsitesMvc.xml" />
    <file src="D:\Projects\Websites\Scripts\backtalk.js" target="js\backtalk.js" />
    <file src="D:\Projects\Websites\Scripts\shared.js" target="js\shared.js" />
    <file src="D:\Projects\Websites\SharedWebsitesMvcInstall.ps1" target="tools\Install.ps1" />
</files>

Nuget generates a package, and package explorer shows the following:

js
    backtalk.js
    shared.js
lib
    net46
         SharedWebsitesMvc.dll
         SharedWebsitesMvc.xml
tools
     Install.ps1

Install.ps1 выглядит так:

param($installPath, $toolsPath, $package, $project)
Write-Host "hello from install.ps1"

Когда я устанавливаю этот пакет в проект MVC, файлы сценария не копируются, и вывод сценария в консоли пакета не отображается. Я использую Visual Studio 2016.

Что не так с моей спецификацией NuGet?


person Sasha Palmer    schedule 02.05.2016    source источник


Ответы (1)


Файлы JavaScript должны иметь цель, начинающуюся с Content:

<file src="D:\Projects\Websites\Scripts\backtalk.js" target="Content\js\backtalk.js" />
<file src="D:\Projects\Websites\Scripts\shared.js" target="Content\js\shared.js" />

Вышеприведенное не поддерживает проекты, в которых используется файл project.json. Для них вам нужно использовать раздел ContentFiles в вашем файле .nuspec:

<contentFiles>
    <files include="D:\Projects\Websites\Scripts\backtalk.js"   buildAction="None" />
</contentFiles>

Файл .nuspec выглядит нормально для сценария PowerShell install.ps1 для проектов, использующих файл packages.config. Обратите внимание, что install.ps1 не поддерживается в проектах, использующих файлы project.json.

person Matt Ward    schedule 02.05.2016
comment
Спасибо за помощь. Я внес изменения, но файлы содержимого не были скопированы. Только что узнал, что это еще не работает. github.com/aspnet/Home/issues/651 - person Sasha Palmer; 03.05.2016