2017-03-25 5 views
1

こんにちは私は、PowerShell iseを使用して作成したdllからメソッドを実行しようとしています。今私はすでに 'ドットネットfoo.dll'を使用してcmdから私のdllを実行するが、私も同様にpowershellを使用したいと思います。 Program.csの今、私はVS2017 Enterpriseの.NETのコアフレームワークを使用して新しいコンソールアプリケーションを作成している Powershell ISEでカスタムdllメソッドを実行する

using System; 

namespace ConsoleApp1 
{ 
    public class Program 
    { 
     public static void Main() 
     { 
      Console.WriteLine("Hello World!"); 
      Console.ReadKey(); 
     } 
    } 
} 

は、ここに私のコードです。私は、実行可能ファイルをビルドしていないとdllファイルしか手に入れませんでした。私はオンラインで調査して、でdllファイルをロードする方法を見つけました[Reflection.Assembly] :: LoadFile( "pathtofile") btw LoadWithPartialNameは何らかの理由で動作しません。

だからロードした後、私は [ConsoleApp1.Program]で::メイン() Mainメソッドを呼び出そうと

Unable to find type [ConsoleApp1.Program]. 
At line:1 char:1 
+ [ConsoleApp1.Program]::Main 
+ ~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (ConsoleApp1.Program:TypeName) [], RuntimeException 
+ FullyQualifiedErrorId : TypeNotFound 

が、私はへの解決策を見つけることができない私を助けてください、私はこのエラーを取得しますこれは数時間です。

答えて

0

これが許可されているかどうかわからが、私は仕事にここに答えが見つかりません:その後

Add-Type -Path "<path to your dll>" 

:代わりに、リフレクションを使用しての

https://stackoverflow.com/a/12924252/3485669

基本的には、アドインタイプを使用あなたは適合と思うと[ConsoleApp1.Program]::Main()を使用できるはずです。

+0

これはちょうど私に別のエラーを与えるあなたの答えをいただき、ありがとうございます。 –

+0

アドインタイプ:要求された種類の一つ以上を読み込むことができません。より多くの 情報についてLoaderExceptionsプロパティを取得します。ラインで :1つの文字:1 +-追加型-Path「C:\ Users \ユーザーのVisual Studio 2017 \ユーザー\ドキュメントプロジェクト\ \ C ... + ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo:NotSpecified:(:) [アドオンの種類]を、ReflectionTypeLoadException + FullyQualifiedErrorId:System.Reflection.ReflectionTypeLoadException、Microsoft.PowerShell.Commands.AddTypeCom のmand –

+0

@NikolasPitsillosロードしようとしています直接ソースファイル(すなわち '[Reflection.Assembly] :: LoadFileが( "Program.csのを\へのパス\")'。) –

0

あなたはPowerShellのには、.NETのコアアセンブリをダウンロードしようとするが、それはネットフレームワーク

を使用

使用このコマンド

アドオンタイプ-Path C:\ PathToYourDll \ DllName.dll -PassThru

"add-type:要求された型の1つ以上を読み込めません。詳細については、LoaderExceptionsプロパティを取得してください。"

この実行後:

$エラー[0] .Exception.LoaderExceptions

「ファイルまたはアセンブリをロードできませんでした「System.Runtime、バージョン= 4.1.0.0を、カルチャニュートラル、PublicKeyToken = = b03f5f7f11d50a3a 'またはi のいずれかに依存しません。指定されたファイルが見つかりません。

まず、.Netコアのすべての依存関係を読み込む必要があります。あなたは、Visual Studioプロジェクトの中で、Solution Explorer-> Dependencies-> SDKのdllの中から見つけることができます。

しかし、.NET Coreプロジェクトとしてではなく、.NET Frameworkプロジェクトとしてdllを作成すると非常に簡単に行うことができます。 DLLから関数を

をし、実行:この場合、あなたは自分のdllをダウンロードする必要が

+0

私もこれを試し、あなたの答えに感謝します。 –

0

YOUR DLLは、.NET FrameworkのDLLをされていない、それは。あなたはすべて手動でdependencie

を解決する必要があります

NET CORE DLLは、あなたのDLLは、.NETコアです。最初にすべての.Netコア依存関係をPowerShellセッションにロードする必要があります。依存していない依存関係を確認することができます

add-type -Path C:\PathToYourDll\DllName.dll -PassThru 
$Error[0].Exception.LoaderExceptions 

.netコアプロジェクトを使用する必要がありますか?なぜなら、net core dllはpowershellセッションにロードするためには何か違うからです。

+0

私もこれを試し、あなたの答えに感謝します。 –

関連する問題