2013-02-12 11 views
4

我想用腳本部署到NuGet。我有以下命令進行實際部署:NuGet pack忽略-Prop當參數指定的參數

nuget pack MyProjection.csproj -Build -Properties Configuration=Release 

根據NuGet網站上提供的示例,這是正確的命令行。我注意到一些例子說-Prop而不是-Properties,但我認爲它不重要。

然而,產出的NuGet:

Attempting to build package from 'MyProject.csproj'. 
Building project for target framework '.NETFramework,Version=v4.0'. 
Packing files from 'C:\Users\...\MyProjection\bin\Debug'. 
Using 'MyProject.nuspec' for metadata. 
Successfully created package 'C:\Users\...\MyProject\MyProject.2.2.0.0.nupkg'. 

注意,它是在Debug文件夾打包的文件,而不是Release文件夾!

如果我刪除-Build設置,它會從Release中抓取它所需的文件。第一個問題是:我是否發佈了我的項目的調試版本?第二個問題是:如何將這兩個命令參數一起使用?

如果必須,我將使用MSBuild構建項目。

回答

4

打包項目時,nuget將使用當前項目設置,忽略從命令行傳遞的Configuration選項。例如,basepath參數也是一樣。

如果您將默認配置更改爲發佈,nuget將使用發佈位構建您的包。請在您的.csproj如下:

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 

並將其更改爲:

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> 
+0

我只是切換到使用的MSBuild。無論如何,我正在運行MSTest作爲部署階段的一部分,那麼還有什麼更多的.exe依賴項? – 2013-02-20 01:15:01

+1

是的。請注意,如果您打包了一個csproj,Nuget仍然會**查找bin \ debug。我也用msbuild構建,然後用nuget打包,但我需要更改項目的默認構建配置,以確保它打包發佈位。 – dpeterson 2013-02-20 17:27:19