2016-04-28 164 views
0

使用Visual Studio 2012,我創建了一個C#中的DLL文件,通過引用它可以在Access 2013中使用它。這一切工作正常。我創建了DLL,並用CMD註冊它:RegAsm.exe -tlb -codebase C:\MyFolderX\MyDLL.dll使用Powershell註冊一個帶有Regasm的.NET DLL失敗

這一切工作正常,但因爲DLL需要在多臺計算機上註冊,我想用1次單擊而不是在每臺用戶計算機上手動執行此操作。

由於用戶已經使用BATCH文件來啓動Access前端應用程序(使用DLL),我認爲在他們使用BATCH啓動時註冊一次是明智的做法。因此,要做到這一點這我加入我的批處理腳本如下:

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 
RegAsm.exe -tlb -codebase C:\MyFolderX\MyDLL.dll 

這可悲的是沒有工作,因爲它在管理模式下完成,並檢查以管理員身份運行只是通過我的批處理代碼就沒有複選框出於某種原因做任何事情。

所以我雖然,爲什麼不使用Powershell腳本來做同樣的事情,並啓動從我的批處理腳本。

要做到這一點,我創建了下面的腳本:

#Register the assembly 
$RegAsm = 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe -codebase -tlb' 
$Assembly = 'C:\MyFolderX\MyDLL.dll' 

Start-Process $RegAsm $Assembly 

pause 

然而,這一直給錯誤:

Start-Process : This command cannot be run due to the error: The system cannot find the file specified. At C:\users\me\Desktop\RegisterMyDLL.pst1 

+Start-Process $RegAsm $Assembly 

InvalidOperation: (:) Start-Process 
FullyQualifiedErrorId : InvalidOperationException, Microsoft.Powershell.Commands.StartProcessCommand 

我雙重檢查DLL的位置,它只是有..任何人有什麼線索我做錯了什麼?也許一些語法錯誤或引用很多?已經試圖逃脫我的反斜槓,但這沒有任何影響。

或者有更好的方法來實現簡單的DLL註冊在多個用戶?

回答

1

這是行不通的嗎?

."C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" -codebase -tlb $Assembly 
+0

是的!謝謝!儘管如此,仍然給了我管理員的警告,但至少我現在有點多了! – Nicolas