ฉันไม่สามารถแก้ปัญหาที่แน่นอนของคุณได้ แต่ฉันสามารถให้คำแนะนำกับคุณได้
ข้อกำหนดหลักของคุณคือ: "และห้ามลงทะเบียนข้อมูลอ้างอิงอัตโนมัติ" .....
ดังนั้นคุณจะต้องทำความคุ้นเคยกับ "รายการโซลูชัน"
ดูข้อมูลอ้างอิงที่นี่:
การเพิ่มรายการระดับโซลูชันในแพ็คเกจ NuGet
คุณจะต้องเขียน powershell voodoo เพื่อรับสำเนาของ dll พื้นเมืองของคุณในบ้าน (อีกครั้งเพราะคุณไม่ต้องการให้วูดูที่เพิ่มการอ้างอิงอัตโนมัติเริ่มทำงาน)
นี่คือไฟล์ ps1 ที่ฉันเขียน ..... เพื่อใส่ไฟล์ในโฟลเดอร์อ้างอิงของบุคคลที่สาม
มีเพียงพอสำหรับคุณที่จะหาวิธีคัดลอก dll พื้นเมืองของคุณไปยัง "บ้าน" ... โดยไม่ต้องเริ่มต้นใหม่
อีกครั้งไม่ใช่การโจมตีโดยตรง แต่ดีกว่าไม่มีอะไรเลย
param($installPath, $toolsPath, $package, $project)
if ($project -eq $null) {
$project = Get-Project
}
Write-Host "Start Init.ps1"
<#
The unique identifier for the package. This is the package name that is shown when packages are listed using the Package Manager Console. These are also used when installing a package using the Install-Package command within the Package Manager Console. Package IDs may not contain any spaces or characters that are invalid in an 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 "packageNameNoVersion:" "${packageNameNoVersion}"
Write-Host " "
<# Recursively look for a .sln file starting with the installPath #>
$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)
<# End recursive search for .sln file #>
if ( $parentFolder -ne $null -and $latest -ne $null )
{
<# Create a base directory to store Solution-Level items #>
$thirdPartyReferencesDirectory = $parentFolder.FullName + "\ThirdPartyReferences"
if ((Test-Path -path $thirdPartyReferencesDirectory))
{
Write-Host "--This path already exists: $thirdPartyReferencesDirectory-------------------"
}
else
{
Write-Host "--Creating: $thirdPartyReferencesDirectory-------------------"
New-Item -ItemType directory -Path $thirdPartyReferencesDirectory
}
<# Create a sub directory for only this package. This allows a clean remove and recopy. #>
$thirdPartyReferencesPackageDirectory = $thirdPartyReferencesDirectory + "\${packageNameNoVersion}"
if ((Test-Path -path $thirdPartyReferencesPackageDirectory))
{
Write-Host "--Removing: $thirdPartyReferencesPackageDirectory-------------------"
Remove-Item $thirdPartyReferencesPackageDirectory -Force -Recurse
}
if ((Test-Path -path $thirdPartyReferencesPackageDirectory))
{
}
else
{
Write-Host "--Creating: $thirdPartyReferencesPackageDirectory-------------------"
New-Item -ItemType directory -Path $thirdPartyReferencesPackageDirectory
}
Write-Host "--Copying all files for package : $packageNameNoVersion-------------------"
Copy-Item $installPath\*.* $thirdPartyReferencesPackageDirectory -recurse
}
else
{
Write-Host "A current or parent folder with a .sln file could not be located."
}
Write-Host "End Init.ps1"