0

私の要件は、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;
    }

}

これにより、次のようなエラーが発生します: アセンブリをキャッシュに追加できませんでした: ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません。たくさん試しましたが、修正できませんでした。助けてください :)

4

1 に答える 1