![](/img/trans.png)
[英]How to cleanup resources in a DLL when Powershell ISE exits - like New-PSSession and New-PSJob
[英]Powershell ISE to run custom dll method
你好,我一直試圖從我使用powershell ise創建的dll中運行一個方法。 現在我已經使用'dotnet foo.dll'從cmd運行我的dll,但我也想使用powershell。
這是我的代碼:Program.cs
using System;
namespace ConsoleApp1
{
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
現在我在VS2017 Enterprise中創建了一個帶有.net核心框架的新控制台應用程序。 在構建沒有可執行文件后,我只獲得了一個dll文件。 btw LoadWithPartialName doesn't work for some reason. 我在網上研究過,發現如何使用加載dll文件, LoadWithPartialName由於某種原因不起作用。
and i get this error 所以加載后我嘗試用調用Main方法,我得到這個錯誤
Unable to find type [ConsoleApp1.Program].
At line:1 char:1
+ [ConsoleApp1.Program]::Main
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (ConsoleApp1.Program:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
請幫幫我,我幾個小時都找不到任何解決方案。
不確定這是否允許,但我發現這里的答案有效:
https://stackoverflow.com/a/12924252/3485669
基本上,不使用Reflection,而是使用Add-Type:
Add-Type -Path "<path to your dll>"
之后,您應該可以根據需要使用[ConsoleApp1.Program]::Main()
。
您嘗試將.Net核心程序集下載到Powershell,但它使用Net Framework。
使用此命令:
add-type -Path C:\PathToYourDll\DllName.dll -PassThru
你會看到這樣的事情:
"add-type : Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information."
執行此后:
$Error[0].Exception.LoaderExceptions
"Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of i
ts dependencies. The system cannot find the file specified."
首先,您需要加載.Net Core的所有依賴項。 您可以在解決方案資源管理器 - >依賴項 - > SDK下的Visual Studio項目中找到它。
但它可以通過非常簡單的方式完成,如果你讓你不像.Net Core項目,只需.Net Framework項目。 在這種情況下,您只需下載您的DLL:
並從dll執行函數:
您的DLL不是.NET FRAMEWORK DLL,它是.NET CORE DLL
您必須手動解決所有依賴項
你的DLL是.Net核心。 您必須首先將所有.Net核心依賴項加載到您的PowerShell會話中。 您可以檢查錯過的依賴項
add-type -Path C:\PathToYourDll\DllName.dll -PassThru
$Error[0].Exception.LoaderExceptions
你必須使用.net核心項目? 因為對於net core dll來說,將它加載到PowerShell會話中會有所不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.