Я создал библиотеку классов C #, в которой будет размещено несколько командлетов PowerShell Core (6.1.2).
Проект включает в себя два пакета NuGet:
- System.Management.Автоматизация (для ядра) (6.1.2)
- Oracle.ManagedDataAccess.Core (2.18.3)
Командлет New-Session
:
using System;
using System.Management.Automation;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
namespace PsOracleCore.Cmdlets
{
[Cmdlet(VerbsCommon.New, "Session")]
[OutputType(typeof(OracleConnection))]
public class NewSessionCmdlet : Cmdlet
{
[Parameter(Position = 0)]
[ValidateNotNullOrEmpty]
public string Account { get; set; }
[Parameter(Position = 1)]
[ValidateNotNullOrEmpty]
public string Password { get; set; }
[Parameter(Position = 2)]
[ValidateNotNullOrEmpty]
public string DataSource { get; set; }
protected override void ProcessRecord()
{
string connectionString = String.Format("User Id={0};Password={1};Data Source={2};",this.Account,this.Password,this.DataSource);
OracleConnection connection = new OracleConnection();
connection.ConnectionString = connectionString; connection.Open();
WriteObject(connection);
}
} // class
} // namespace
Тесты xUnit (которые включают ссылку на проект) работают должным образом.
После импорта модуля в сеанс pwsh
(в OS X) я пытаюсь использовать командлет:
$ pwsh
PowerShell 6.1.2
Copyright (c) Microsoft Corporation. All rights reserved.
PS [project]/bin/Debug/netcoreapp2.1> import-module PsOracleCore
PS [project]/bin/Debug/netcoreapp2.1> new-session
Could not load file or assembly 'Oracle.ManagedDataAccess, Version=2.0.18.3, Culture=neutral, PublicKeyToken=89b483f429c47342'. The system cannot find the file specified.
At line:1 char:1
+ new-session
+ ~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException
Мне удалось устранить ошибку, создав символическую ссылку на сборку в каталоге проекта /bin/Debug/netcoreapp2.1
:
$ ln -s ~/.nuget/packages/oracle.manageddataaccess.core/2.18.3/lib/netstandard2.0/Oracle.ManagedDataAccess.dll Oracle.ManagedDataAccess.dll
Чего-то не хватает в моем проекте?
ЕслиЯ хочу распространить сборку Cmdlet, что мне нужно сделать, чтобы убедиться, что пакет NuGet правильно установлен и на него есть ссылки?