簡體   English   中英

Powershell ISE運行自定義DLL方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM