2013-03-13 79 views
1

我使用惡性建立我的項目,發佈網站項目(一個或多個)。我想在生成的包中包含PDB。當我執行msbuild時,如何從命令行設置ExcludeGeneratedDebugSymbol屬性?設置的MSBuild網站發佈房產「ExcludeGeneratedDebugSymbol」從命令行

我試着將它添加到的參數列表中,但我沒有看到的PDBS依然。我exec任務看起來是這樣的:

<exec program="${MSBuildPath}" workingdir="${path::get-full-path(PublishWebProject.SourcePath)}\"> 
    <!-- Don't show the logo. --> 
    <arg value="/nologo"/> 
    <!-- Build w/o Clean --> 
    <arg value="/t:Build"/> 
    <!-- Configuration, Output, Options, No Warnings --> 
    <arg value="/p:OutputPath=bin\;OutDir=${path::get-full-path(PublishWebProject.OutputPath)};Configuration=${Configuration};Platform=Any CPU;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;WarningLevel=0;RunCodeAnalysis=false;ExcludeGeneratedDebugSymbol=false"/> 
    <!-- Quiet --> 
    <arg value="/v:q"/> 
    <!-- Project Path --> 
    <arg value="${PublishWebProject.ProjectFileName}"/> 
</exec> 

這裏是MSBuild的實際調用:

[exec] Starting 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe (/nologo /t:Build "/p:OutputPath=bin\;OutDir=D:\Projects\XYZ\Publish\Release-Production\CommonWeb\;Configuration=Release-Production;Platform=Any CPU;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;WarningLevel=0;RunCodeAnalysis=false;ExcludeGeneratedDebugSymbol=false" /v:q CommonWeb.csproj)' in 'D:\Projects\XYZ\Source\CommonWeb\' 

這將等同於:

D:\Projects\XYZ\Source\CommonWeb> C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe /nologo /t:Build "/p:OutputPath=bin\;OutDir=D:\Projects\XYZ\Publish\Release-Production\CommonWeb\;Configuration=Release-Production;Platform=Any CPU;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;WarningLevel=0;RunCodeAnalysis=false;ExcludeGeneratedDebugSymbol=false" /v:q CommonWeb.csproj 

我也嘗試設置UseWPP_CopyWebApplication爲假,但這也沒有幫助。

+0

您可以發佈NAnt輸出。我懷疑未引用的屬性參數可能是一個問題 – 2013-03-14 11:29:18

+0

如果需要,NAnt自動引用參數。舉例來說,我長的參數,它開始與'/ p:OutputPath ...'最終成爲'「/ P:OutputPath ......」'因爲它在'OutDir'參數的值空間。而且構建工作正常,我只是沒有得到PDB。我甚至不相信'ExcludeGeneratedDebugSymbol'屬性是有效的。我會在幾分鐘後發佈完整的命令行... – 2013-03-14 12:37:07

+0

我的下一個猜測是設置調試信息。找到我的答案 – 2013-03-14 12:59:00

回答

0

您的項目文件中包含輸出調試信息的信息。嘗試將調試信息設置爲pdb-only

<arg value="/debug:pdbonly" /> 
+0

這給了我:'MSBUILD:錯誤MSB1001:未知的開關。開關:/調試:pdbonly'我有種意料之中的,因爲它不是在這裏當開關所列:http://msdn.microsoft.com/en-us/library/vstudio/ms164311(v=vs.100).aspx 我有「屬性>生成>輸出>高級>輸出>調試信息」設置「PDB,只有」在項目文件中設置。我也取消選中'Properties> Package/Publish Web>要部署的項目>排除生成的調試符號。無濟於事。 – 2013-03-14 13:03:38

+0

您知道設置輸出調試信息是否構建配置敏感的事實?在將'Debug Info'設置爲'pdb-only'之前,將'Properties> Build> Configuration'設置爲'All Configurations'。 – 2013-03-14 13:23:40

+0

是的,僅爲我的所有構建配置選擇了「pdb-only」(並且上述複選框未被選中)。 – 2013-03-14 17:13:10