2017-08-15 38 views
0

我已將我的.NET Framework項目遷移到.NET標準項目。在類庫(.NET標準)項目中添加install.ps1

在.NET Framework的項目,我有額外的文件配置一個.nuspec文件,並以「NuGet.exe包」

<files> 
    <file src="Install.ps1" target="tools\Install.ps1" /> 
    </files 

在.NET標準的項目,我沒有不再是一個創建NuGet包nuspec文件並切換到「msbuild -t:Pack」來創建nuget包。我嘗試將install.ps1設置爲(BuildAction = Content),但隨後在日誌「Issue:PowerShell file out side tools folder」中看到警告。在nupkg文件中,目錄是「content \ tools \ Install.ps1」,我需要「tools \ Install.ps1」。

+1

此問題的任何更新?你能從答案中得到任何有用的信息嗎?如果沒有,請讓我知道這個問題的最新狀態。 –

+0

對不起沒有更新,我的臨時解決方案是在創建後添加工具文件夾7zip –

+0

@ Leo-MSFT不知道您是否在添加新答案時收到通知,但我添加了適用於我的解決方案(並且似乎做的方式) – Robba

回答

1

獲取文件到一個包中的不同的路徑,你可以在<Content>元素像這樣使用<PackagePath>元素:

<ItemGroup> 
    <Content Include="install.ps1"> 
     <PackagePath>tools\</PackagePath> 
    </Content> 
</ItemGroup> 

(提供install.ps1是在你的項目的根,否則你將不得不調整Include屬性值)

欲瞭解更多信息,請查閱文檔有關pack的MSBuild目標位置:

https://github.com/NuGet/Home/wiki/Adding-nuget-pack-as-a-msbuild-target

0

我已嘗試將install.ps1設置爲(BuildAction = Content),但隨後在日誌「Issue:PowerShell file out side tools folder」中看到警告。而在nupkg文件的目錄是「內容\ TOOLS \ Install.ps1」我需要「TOOLS \ Install.ps1」

當您使用msbuild -t:Pack創建NuGet包,的MSBuild/VS預計該文件是在內容文件夾中。但是,如果您仍然想要tools目錄中的install.ps1文件,仍然可以使用.nuspec文件和nuget.exe打包該軟件包。

具體步驟收拾包:

創建.nuspec如下設置:

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>TestInstall.ps1</id> 
    <version>1.0.0</version> 
    <authors>Test</authors> 
    <owners>Test</owners> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>Package description</description> 
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> 
    <copyright>Copyright 2017</copyright> 
    <tags>Tag1 Tag2</tags> 
    </metadata> 

    <files> 
    <file src="Install.ps1" target="tools" /> 
    <file src="bin\Debug\netstandard1.4\TestInstall.ps1.dll" target="lib\netstandard1.4" /> 
    </files> 

</package> 

然後使用命令行:nuget.exe pack xxx.nuspec收拾的包,你會得到包Install.ps1在工具目錄中:

enter image description here

相關問題