«Meta file .dll не может быть найден» во время PS Add-Type (код C #) - PullRequest
0 голосов
/ 01 октября 2018

Я хочу выполнить код C # в сценарии PS с помощью Add-Type.Но я получаю: Metadata file 'Microsoft.Azure.ServiceBus.dll' could not be found.Код C # использует пакет NuGet под названием «Microsoft.Azure.ServiceBus».

Моя сборка, на которую есть ссылки, не работает.Вот мой код:

PS

$cmd = {

$Assem = ( 
"Microsoft.Azure.ServiceBus", 
"netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"
) 

$Source = (Get-Content -Path "D:\myPath\csharp-code.cs" -ReadCount 0) -join "`n"

Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp 
[ABC.Azure.ServiceBus.TopicSubscriber]::test()
}

# Execute script as Job to avoid "Add-Type"-conflict during development changes
$j = Start-Job -ScriptBlock $cmd

do 
{
  Receive-Job -Job $j
} while ( $j.State -eq "Running" )

C #

using Microsoft.Azure.ServiceBus;
using System;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;

namespace ABC.Azure.ServiceBus
{
  class TopicSubscriber
  {
    bool test()
    {
        <more code>
    }
  }
}

В чем корень этой проблемы и как я могу ее исправить?К сожалению, я не очень знаком с PS и C #.

1 Ответ

0 голосов
/ 01 октября 2018

Проблема, которую вы получаете по сути: File not found.

Основная причина - ваш относительный путь к указанной сборке в -

$assemblies = @(
    'Microsoft.Azure.ServiceBus'
    'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
)

, поскольку Microsoft.Azure.ServiceBus нев GAC.

Я подозреваю, что если вы используете Set-Location, где находится файл Microsoft.Azure.ServiceBus.dll, вы решите свою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...