Импортируйте двоичный модуль Powershell с простой зависимостью.C#

Место общения программистов C#
Ответить
Anonymous
 Импортируйте двоичный модуль Powershell с простой зависимостью.

Сообщение Anonymous »

Я создал решение с двумя проектами с использованием CLI dotnet следующим образом:

Код: Выделить всё

PS> dotnet new classlib --output Lib
PS> dotnet new psmodule --output PsModule
PS> dotnet new sln
PS> dotnet sln add Lib
PS> dotnet sln add PsModule
В Visual Studio 2022 я сделал следующее:
  • открыл решение и добавил ссылку на Lib< /code> в PsModule.
    изменил целевую платформу в PsModule CSPROJ с netstandard2.0 на net9.0< /li>
содержит один класс следующим образом:

Код: Выделить всё

namespace Lib;

public static class Class1
{
public static string GetString()
{
return "FROM DEPENDENCY";
}

}

Код: Выделить всё

PsModule
содержит определение командлета powershell без параметров и просто вызывает статический метод из Lib и записывает его в выходные данные:

Код: Выделить всё

using System;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using Lib;

namespace PsModule
{
[Cmdlet(VerbsDiagnostic.Test,"SampleCmdlet")]
public class TestSampleCmdletCommand : PSCmdlet
{

// This method will be called for each input received from the pipeline to this cmdlet; if no input is received, this method is not called
protected override void ProcessRecord()
{
WriteObject(Class1.GetString());
}

}
}
Решение создано без ошибок, поэтому я затем зашел в каталог bin для PsModule и добавил манифест модуля:

Код: Выделить всё

PS>New-ModuleManifest PsModule.psd1
В манифесте модуля я внес следующие изменения:

Код: Выделить всё

@{
// ...

RootModule = 'PsModule.dll'
RequiredAssemblies = @(
"Lib.dll"
)
CmdletsToExport = @(
"Test-SampleCmdlet"
)
//..
}
Затем я попытался импортировать свой модуль в Powershell, при этом каталог bin был моим текущим рабочим каталогом следующим образом:

Код: Выделить всё

PS> import-module .\PsModule.psd1
PS> test-sampleCmdlet
К сожалению, запуск командлета вызывает следующую ошибку:

Test-SampleCmdlet: не удалось загрузить файл или сборку ' System.Runtime, версия = 9.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a'. Система не может найти указанный файл.

Что здесь не так и как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/793 ... dependency
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»