我正在寫一個PowerShell模塊,它取決於SQL Server中的SMO程序集。 (我唯一需要參考的是Microsoft.SqlServer.Smo.dll)如何在PowerShell模塊中引用GAC中的程序集?
當我一直在開發模塊。我剛把我需要組裝的副本,並在我的清單文件中引用它類似於此:
RequiredAssemblies = @(
"$env:userprofile\Documents\WindowsPowerShell\Modules\Dependencies\Microsoft.SqlServer.Smo.dll"
)
我會假設,在生產環境中,你會想從標準位置引用組件。我假設一個標準的位置是GAC。
如果我從GAC引用的程序集,我得到這個,但是這看起來像如果安裝組件的新版本,它可以打破:
RequiredAssemblies = @(
'C:\WINDOWS\assembly\gac_msil\Microsoft.SqlServer.Smo\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Smo.dll'
)
我也直接從引用的程序集SDK:
RequiredAssemblies = @(
'C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Smo.dll'
)
我已經考慮(但可能會在某處被打破了EULA)另一種選擇是將組件複製到服務器共享和參考,像這樣:
RequiredAssemblies = @(
'\\MyServer\PowerShellDependencies\Microsoft.SqlServer.Smo.dll'
)
但我應該怎麼做呢?
如果相關,則該模塊將安裝到的所有計算機都是64位,並且將安裝SMO庫。此外,這不是一個公開可用的軟件,它正在部署在公司網絡上。
更新:我試過只在清單中指定程序集的名稱,這似乎工作。
RequiredAssemblies = @(
'Microsoft.SqlServer.Smo.dll'
)
SMO對象是否可以在GAC中使用,或者您是否可以安裝它們? –
@RichRousseau,我試圖看看將模塊與.dll文件綁定是否合法,否則是的,他們必須先安裝。 – Jake