Код: Выделить всё
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
- открыл решение и добавил ссылку на Lib< /code> в PsModule.
изменил целевую платформу в PsModule CSPROJ с netstandard2.0 на net9.0< /li>
Код: Выделить всё
LibКод: Выделить всё
namespace Lib;
public static class Class1
{
public static string GetString()
{
return "FROM DEPENDENCY";
}
}
Код: Выделить всё
PsModuleКод: Выделить всё
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());
}
}
}
Код: Выделить всё
PS>New-ModuleManifest PsModule.psd1
Код: Выделить всё
@{
// ...
RootModule = 'PsModule.dll'
RequiredAssemblies = @(
"Lib.dll"
)
CmdletsToExport = @(
"Test-SampleCmdlet"
)
//..
}
Код: Выделить всё
PS> import-module .\PsModule.psd1
PS> test-sampleCmdlet
Test-SampleCmdlet: не удалось загрузить файл или сборку ' System.Runtime, версия = 9.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a'. Система не может найти указанный файл.
Что здесь не так и как это исправить?
РЕДАКТИРОВАТЬ
Мне удалось заставить его работать, понизив версию всех проектов до .NET 8. Я не уверен, почему он не работает с .NET 9. Если кто-нибудь может предоставить хорошее объяснение того, почему это не работает с .NET 9, которое было бы здорово.
Подробнее здесь: https://stackoverflow.com/questions/793 ... dependency
Мобильная версия