私の要件は、GACにdllを登録することであり、同じためにgacutilを使用しています。私が書いたcoeは次のとおりです。
function RegisterAssembliesToGAC([string]$frameworkPath,[string]$GACDllLocation)
{
try
{
$Dirs = Get-ChildItem $GACDllLocation -Recurse
$Dlls = $Dirs | Where { $_.extension -eq ".dll" }
ForEach($dll in $Dlls)
{
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\gacutil.exe -i $dll.FullName
}
}
catch [Exception]
{
write-host $_.Exception.Message `n;
}
}
これは私にとってはうまくいきます.$frameworkpathは引数であり、その値をパラメータとして渡したいと思います.だから私は次のように私のコードを修正しました
function RegisterAssembliesToGAC([string]$frameworkPath,[string]$GACDllLocation)
{
try
{
$Dirs = Get-ChildItem $GACDllLocation -Recurse
$Dlls = $Dirs | Where { $_.extension -eq ".dll" }
ForEach($dll in $Dlls)
{
$frameworkPath="C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
$gacpath=[string]$frameworkPath + "\gacutil.exe"
Invoke-Expression "$gacpath -i $dll.FullName"
}
}
catch [Exception]
{
write-host $_.Exception.Message `n;
}
}
これにより、次のようなエラーが発生します: アセンブリをキャッシュに追加できませんでした: ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません。たくさん試しましたが、修正できませんでした。助けてください :)