I miei pensieri sono, la confezione NuGet è un sacco di convenzioni.
Non c'è nessun problema nel confezionamento stessi spazi dei nomi e stessi nomi per diverse piattaforme (come in lib/net40/mydll.dll
, lib/net35/mydll.dll
ecc nello stesso package), come NuGet filtrerà le dipendenze registrati dalla piattaforma.
La creazione di più versioni per la stessa piattaforma sembra non convenzionale, this discussion è sbilanciato verso la realizzazione di un pacchetto per generazione. Ciò non significa che non puoi farlo, ma prima dovresti chiederti se dovresti.
Detto questo, se le versioni di debug e release sono molto diverse (compilazione condizionale, ecc.), Ciò potrebbe comunque essere utile. Ma in che modo gli utenti finali sceglieranno Release o Debug durante l'installazione del pacchetto?
Un'idea potrebbe essere, una versione per configurazione di build. Both can be installed into the project. Per fare ciò, aggiungi uno targets file to your package o crea a powershell install script che aggiunge riferimenti condizionali direttamente nel file di progetto di destinazione, se vuoi qualcosa di meno semplice di quello che MsBuild può fare per te.
Esempio del primo tattica: Creare un file .target (nel pacchetto, creare una cartella build
e quindi creare build\YourLib.targets
con i seguenti contenuti):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<Reference Include="YourLib">
<HintPath>..\packages\YourLib.1.0.0\lib\Debug\YourLib.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Release'">
<Reference Include="YourLib">
<HintPath>..\packages\YourLib.1.0.0\lib\Release\YourLib.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
Fornendo si è creato il debug e rilasciare le cartelle (piattaforma la cartella è facoltativa), l'output della build cambierà in base alla configurazione, a patto che gli utenti del pacchetto abbiano nomi di configurazione convenzionali, ma si potrebbe sempre estendere la logica della condizione con $(Configuration).Contains etc o semplicemente inserirla nel pacchetto readme
Questa risposta dovrebbe essere preoccupata. Grazie. –