2016-10-07 40 views
1

我正在使用NuGet工具以創建使用我的.csproj.nuspecnuspec始終生成佔位符模板文件

問題一直是產生我一個佔位符模板文件:

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>$id$</id> 
    <version>$version$</version> 
    <title>$title$</title> 
    <authors>$author$</authors> 
    <owners>$author$</owners> 
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl> 
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl> 
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>$description$</description> 
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> 
    <copyright>Copyright 2016</copyright> 
    <tags>Tag1 Tag2</tags> 
    </metadata> 
</package> 

我不知道爲什麼我傾倒了相同的內容。

任何想法?

回答

0

如果你看看NuGet的源代碼,這是它是如何實現的。它總是添加這些佔位符。

你應該替換它們。

nuget.exe spec命令無法確定它們應該是什麼,它會爲您可能想要指定的值添加佔位符。

+0

謝謝@Matt。那麼,爲什麼它要求一個可選參數來設置'csproj'參數,如果它總是生成相同的內容? – Jordi

+0

當您傳遞.csproj時,它會在.nuspec文件中放置一些佔位符(如$ id $),NuGet將在您生成NuGet包時將NuGet替換爲項目中的信息。項目URL中的其他信息不可用。 –

+0

這確實是我想解決的問題。 'nuget spec'幫助說明你寫下的內容。不過,它始終會生成相同的佔位符filde內容。根據[本文檔](https://docs.nuget.org/ndocs/create-packages/creating-a-package#creating-the--nuspec-file),我只能從一個「spec」生成一個DLL或從'csproj'目錄。我無法弄清楚我在做什麼錯... – Jordi

0

不知道你是否已經自己回答了這個問題,但我在想同樣的事情。我在我的AssemblyInfo.cs文件中有一些值,併爲什麼他們沒有被注入到.nuspec文件中感到困惑。我認爲我們期待着同樣的事情:運行nuget specnuget pack [csproj file]會生成一個新的nuspec文件,其中注入了參數。 原來馬特是完全正確的,但它不是如何工作。

關鍵的答案是,實際上,值注入包中。之後,當您嘗試導入包時,您會發現根據此表正確注入了來自AssemblyInfo的值。 (注意一些元素不是可以通過這種方式注入的!)

就我個人而言,我發現它有些困惑,爲什麼他們會這樣做,其中.nuspec有時包含完全構成該文件的文字,而其他時間則包含必須是模板處理以產生另一個'真正'的nuspec文件(這是.pkg的內部文件,不能輕易閱讀,請介意)。

乾杯!