Je ne peux pas résoudre votre problème exact, mais je peux vous donner une suggestion.
Votre exigence clé est : "Et ne pas auto-enregistrer la référence".....
Vous devrez-vous familiariser avec les "éléments de solution"
Voir la référence ici:
Ajout d'éléments au niveau de la solution dans un package NuGet
Vous devrez écrire un peu de pouvoir PowerShell pour copier votre dll native dans son emplacement (encore une fois, parce que vous NE voulez pas que le pouvoir auto-ajouter-référence s'enclenche)
Voici un fichier ps1 que j'ai écrit.....pour mettre des fichiers dans un dossier de références tierces.
Il y a assez là pour que vous puissiez comprendre comment copier votre dll native dans un "home"... sans avoir à partir de zéro.
Encore une fois, ce n'est pas un coup direct, mais c'est mieux que rien.
param($installPath, $toolsPath, $package, $project)
if ($project -eq $null) {
$project = Get-Project
}
Write-Host "Début Init.ps1"
<#
L'identifiant unique du package. Il s'agit du nom du package qui est affiché lorsque les packages sont répertoriés en utilisant la console du Gestionnaire de packages. Ceux-ci sont également utilisés lors de l'installation d'un package en utilisant la commande Install-Package dans la console du Gestionnaire de packages. Les ID de package ne peuvent pas contenir d'espaces ni de caractères invalides dans une URL.
#>
$separator = " "
$packageNameNoVersion = $package -split $separator | select -First 1
Write-Host "installPath:" "${installPath}"
Write-Host "toolsPath:" "${toolsPath}"
Write-Host "package:" "${package}"
<# Write-Host "project:" "${project}" #>
Write-Host "nomDuPackageNoVersion:" "${packageNameNoVersion}"
Write-Host " "
<# Recherche récursive d'un fichier .sln à partir du chemin d'installation #>
$parentFolder = (get-item $installPath)
do {
$parentFolderFullName = $parentFolder.FullName
$latest = Get-ChildItem -Path $parentFolderFullName -File -Filter *.sln | Select-Object -First 1
if ($latest -ne $null) {
$latestName = $latest.name
Write-Host "${latestName}"
}
if ($latest -eq $null) {
$parentFolder = $parentFolder.parent
}
}
while ($parentFolder -ne $null -and $latest -eq $null)
<# Fin de la recherche récursive du fichier .sln #>
if ( $parentFolder -ne $null -and $latest -ne $null )
{
<# Créer un répertoire de base pour stocker les éléments au niveau de la solution #>
$thirdPartyReferencesDirectory = $parentFolder.FullName + "\ThirdPartyReferences"
if ((Test-Path -path $thirdPartyReferencesDirectory))
{
Write-Host "--Ce chemin existe déjà : $thirdPartyReferencesDirectory-------------------"
}
else
{
Write-Host "--Création de : $thirdPartyReferencesDirectory-------------------"
New-Item -ItemType directory -Path $thirdPartyReferencesDirectory
}
<# Créer un sous-répertoire uniquement pour ce package. Cela permet une suppression propre et une nouvelle copie. #>
$thirdPartyReferencesPackageDirectory = $thirdPartyReferencesDirectory + "\${packageNameNoVersion}"
if ((Test-Path -path $thirdPartyReferencesPackageDirectory))
{
Write-Host "--Suppression de : $thirdPartyReferencesPackageDirectory-------------------"
Remove-Item $thirdPartyReferencesPackageDirectory -Force -Recurse
}
if ((Test-Path -path $thirdPartyReferencesPackageDirectory))
{
}
else
{
Write-Host "--Création de : $thirdPartyReferencesPackageDirectory-------------------"
New-Item -ItemType directory -Path $thirdPartyReferencesPackageDirectory
}
Write-Host "--Copie de tous les fichiers pour le package : $packageNameNoVersion-------------------"
Copy-Item $installPath\*.* $thirdPartyReferencesPackageDirectory -recurse
}
else
{
Write-Host "Un dossier actuel ou parent avec un fichier .sln n'a pas pu être localisé."
}
Write-Host "Fin Init.ps1"