我正在爲我的程序集創建程序包,但我不'想在我的nuget包中包含docs/*。xml文件。我試過nuspec文件中pack命令的-Exclude開關和files部分的exclude屬性以明確排除這些文件。這些都沒有奏效。所以每次我生成我的Nuget包,然後通過在目標項目中安裝它來測試它時,它總是添加一個包含所有xml文件的docs文件夾。我該如何避免xml文件包含在nuget包中?任何幫助將不勝感激。如何在使用nuget包時避免生成xml文檔
2
A
回答
1
謝謝馬特,我已經在做你提到的,但在我看來,Nuget按照慣例做了其他的事情。即使我使用排除,就像你說的docs文件夾被包括在內。我通過使用-a開關(使用我的.csproj文件)生成nuspec文件來解決問題。我還必須將.dll文件複製到解決方案文件夾以外的文件夾。這樣一切正常,並按預期。
無論如何,你的答案是準確的,但在我的情況下,它不工作。不知道這是否是設計。 這是我目前用來生成軟件包的最終msbuild文件。希望Nuget很快會在spec命令中添加更多的開關,這樣我們就不必在之後修改nuspec文件了。
<Project DefaultTargets="NugetPackage" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<OutputPathCore>NugetPkgs\$(Configuration)\My.Assembly</OutputPathCore>
<NuGetExePath>assets\nuget.exe</NuGetExePath>
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<Import Project="$(MSBuildExtensionsPath)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/>
<Target Name="NugetPackage" DependsOnTargets="PackageClean;BuildNugetPackageMyAssembly">
<Target Name="PackageClean">
<RemoveDir Directories ="NugetPkgs\$(Configuration)" ContinueOnError ="true"/>
<Target Name="BuildNugetPackageMyAssembly">
<MakeDir Directories="$(OutputPathCore)" />
<MakeDir Directories="$(OutputPathCore)\Package" />
<MakeDir Directories="$(OutputPathCore)\lib\net40" />
<MakeDir Directories="$(OutputPathCore)\lib\net20" />
<MakeDir Directories="$(OutputPathCore)\lib\net20-cf" />
<Copy
DestinationFolder="$(OutputPathCore)\lib\net40"
SourceFiles="Source\My.Assembly\bin\$(Configuration)\My.Assembly.dll" />
<Copy
DestinationFolder="$(OutputPathCore)\lib\net20"
SourceFiles="VS2008\Source\My.Assembly\bin\$(Configuration)\My.Assembly.dll" />
<Copy
DestinationFolder="$(OutputPathCore)\lib\net20-cf"
SourceFiles="VS2008\Source\My.Assembly.CF\bin\$(Configuration)\My.Assembly.CF.dll" />
<Copy DestinationFolder="$(OutputPathCore)\content" SourceFiles="CHANGES" />
<Copy SourceFiles="Release Notes.txt" DestinationFiles="$(OutputPathCore)\Readme.txt" />
<Exec Command=""$(NuGetExePath)" spec -a "$(OutputPathCore)\lib\net40\My.Assembly.dll"" />
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/licenseUrl" Value="http://someurl" />
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/projectUrl" Value="http://someurl" />
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/iconUrl" Value="http://somenice.png" />
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/tags" Value="My.Assembly" />
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/releaseNotes" Value="Review readme.txt for details." />
<ItemGroup>
<file Include="Source\My.Assembly\bin\$(Configuration)\My.Assembly.dll"/>
<file Include="VS2008\Source\My.Assembly\bin\$(Configuration)\My.Assembly.dll"/>
<file Include="$(OutputPathCore)\Readme.txt"/>
</ItemGroup>
<MSBuild.ExtensionPack.Xml.XmlFile TaskAction="RemoveElement" File="My.Assembly.nuspec" Element="dependencies" XPath="//package/metadata/dependencies" />
<MSBuild.ExtensionPack.Xml.XmlFile TaskAction="AddElement" File="My.Assembly.nuspec" Key="" Value="" Element="files" XPath="//package" InsertAfterXPath="//package" />
<MSBuild.ExtensionPack.Xml.XmlFile TaskAction="AddElement" File="My.Assembly.nuspec" Key="src" Value="%(file.Identity)" Element="file" XPath="//package/files" />
<MSBuild.ExtensionPack.Xml.XmlFile TaskAction="AddAttribute" File="My.Assembly.nuspec" XPath="//package/files/*[1]" Key="target" Value="lib\net40" />
<MSBuild.ExtensionPack.Xml.XmlFile TaskAction="AddAttribute" File="My.Assembly.nuspec" XPath="//package/files/*[2]" Key="target" Value="lib\net20" />
<MSBuild.ExtensionPack.Xml.XmlFile TaskAction="AddAttribute" File="My.Assembly.nuspec" XPath="//package/files/*[3]" Key="target" Value=""/>
<Exec Command=""$(NuGetExePath)" pack My.Assembly.nuspec -OutputDirectory "$(OutputPathCore)\Package" -NoPackageAnalysis" />
<Delete Files ="My.Assembly.nuspec" />
0
要排除所有的.xml文件,您應該使用** \ *。xml通配符。我猜你正在使用* .xml,這是行不通的。
要排除所有.xml文件,你可以使用類似如下的的NuGet命令行:
nuget.exe pack MyPackage.nuspec -Exclude **\*.xml
如果你只需要排除.xml文件docs目錄中,那麼你可以使用的NuGet命令行類似以下內容:
nuget.exe package MyPackage.nuspec -Exclude **\docs\*.xml
通配符似乎相對於你的.nuspec文件in.So如果你有相對.nuspec文件中的文檔的子文件夾的.xml文件,然後通配符的文件夾來工作如果docs * .xml應該也可以。
0
我能想到的另一件事是
- 創建nuspec文件並對其進行編輯。這隻需要做一次(可以檢入)。你在編譯的時候編輯nuspec文件的原因是什麼?在nuspec文件
- 使用的文件元素的文件
<文件> <文件SRC =複製到目標文件夾的 「bin \調試\ *。dll的」 TARGET = 「LIB」/> <文件SRC = 「斌\調試\ *。PDB」目標= 「LIB」/> <文件SRC = 「工具\ * \。*」 排除= 「* \ .LOG」/> < /文件>
3.包命令可以保持在編譯的時候做。
更多詳細信息的文件可以在這裏找到http://docs.nuget.org/docs/reference/nuspec-reference
相關問題
- 1. 如何在使用ScalaCheck生成案例類時避免使用樣板文件?
- 2. 如何避免使用不同包中生成的類生成重複代碼
- 3. 使用nuget包中的Powershell啓用CSPROJ XML文檔文件
- 4. 如何在HTML文件包含mdash時使用Xerces避免SAXParseException?
- 5. 時發生錯誤,生成XML文檔
- 6. 如何使用JAXB沒有XML根元素生成XML文檔
- 7. 如何避免使用aspx包含文件造成錯誤?
- 8. ffmpeg.win10 nuget包文檔
- 9. 從IDL生成java(避免默認包)
- 10. 我該如何避免使用c#在Mongodb中複製文檔?
- 11. 如何避免多次重新加載XML文檔?
- 12. 如何避免被生成圖像
- 13. 如何避免在使用Java XML Transformer時添加XMLNS?
- 14. 避免在XML
- 15. 自動生成XML文檔
- 16. 生成隨機XML文檔
- 17. C#xml文檔生成器
- 18. 從XML生成Excel文檔
- 19. 如何在使用DropShadowEffect時避免OutOfMemoryException?
- 20. 如何在使用BakcgroundWorker時避免invalidOperationException?
- 21. 如何在使用ArrayList時避免ConcurrentModificationException?
- 22. 如何在Xtext中生成方法時避免JvmParameterizedTypeReference:java.util.List <JvmUnknownTypeReference:A>?
- 23. 如何在Lucene索引中更新文檔時避免OutOfMemoryErrors?
- 24. 如何在使用Nuget.VisualStudio安裝NuGet包時生成綁定重定向?
- 25. 如何避免在保存DataFrame時生成crc文件和SUCCESS文件?
- 26. 如何避免在創建新文檔時加載參考文檔?
- 27. 如何避免在Marionette中生成空的文本節點?
- 28. 如何使用API生成PDF文檔?
- 29. 如何使用Pydoc生成文檔
- 30. 如何使用`godoc`生成HTML文檔?
感謝您的建議迪帕克,但我有不同的版本,我組裝的,所以我想使nuspec文件創建後每個這些版本。 – gab