2017-02-10 10 views
1

Я пытаюсь получить количество сообщений, присутствующих в исходящей очереди. Я использую C# с Powershell для достижения этого. Я использую ниже командыПроблема при получении количества сообщений из MSMQ Outqueue

Get-MsmqOutgoingQueue | Format-Table -Property MessageCount 

Эта команда становится успешно выполнена на Powershell командной строке. Но когда я пытаюсь это из C#, он дает следующее исключение:

The type initializer for 'Microsoft.Msmq.PowerShell.Commands.Utilities' threw an exception. 

Ниже С # код, который я использую, чтобы выполнить эту команду:

string scriptTest = "Get-MsmqOutgoingQueue | Format-Table -Property MessageCount"; 
Runspace runspace = RunspaceFactory.CreateRunspace(); 
runspace.Open(); 
Pipeline pipeline = runspace.CreatePipeline(); 
pipeline.Commands.AddScript(scriptText); 
pipeline.Commands.Add("Out-String"); 
Collection<PSObject> results = pipeline.Invoke(); 
runspace.Close(); 
string s = ""; 
foreach (PSObject obj in results) 
{ 
    s = obj.ToString(); 
} 
Console.WriteLine(s); 

Я попробовал этот код, давая все но оно дает такое же исключение.

+0

Есть ли внутреннее исключение? – stuartd

+0

Проверено в InnerException и найдено исключение как: «Сборка смешанного режима построена на версию версии v2.0.50727» среды выполнения и не может быть загружена в среду выполнения 4.0 без дополнительной информации о настройке »Исправлена ​​ошибка, изменяя App.Config. – Brijesh

ответ

1

Исправлена ​​ошибка с добавлением следующего использованияLegacyV2RuntimeActivationPolicy в теге автозагрузки.

<configuration> 
<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/> 
</startup> 
</configuration> 

 Смежные вопросы

  • Нет связанных вопросов^_^