Powershell и перечисления, определенные в сборке C ++ / CLI - PullRequest
2 голосов
/ 27 июля 2010

У меня есть сборка, написанная на C ++ / CLI, которая содержит кучу перечислений, определенных следующим образом, одна за другой в одном заголовочном файле.

namespace Fix
{
    public enum class Side
    {
        SideBuy = '1',
        SideSell = '2'
    };
}

Я могу ссылаться на эти типы в других проектах C #, а в IronPython я могу отобразить сборку и увидеть их все без проблем. Я также использовал их в Powershell в течение многих месяцев без проблем - до сих пор. Я ссылаюсь на них так:

[Fix.Side]::SideBuy

Я только что перешел с Visual Studio 2008 на Visual Studio 2010, и теперь некоторые перечисленные мной перечисления невидимы для Powershell. Я не вижу никакой разницы в объявлениях и могу без проблем отображать типы.

Это сборка .NET 4.0, и я настроил Powershell для работы с версией 4.0. Я сделал это со следующими изменениями реестра.

reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
reg add hklm\software\wow6432node\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1

У кого-нибудь были такие проблемы?

1 Ответ

4 голосов
/ 29 июля 2010

Это работает для меня.Мои шаги:

Я собираю сборку C ++ / CLI .NET 4.0 с одним исходным файлом (кроме stdafx. *):

#include "stdafx.h"

namespace Fix 
{ 
    public enum class Side 
    { 
        SideBuy = '1', 
        SideSell = '2' 
    }; 
} 

Затем я создаю и вызываю этот тестовый скрипт:

Add-Type -Path "C:\...\TryEnum40.dll"
[Fix.Side]::SideBuy

Работает: значение перечисления печатается как положено.

Как настроить PowerShell для работы с .NET 4.0?Я не использую какие-либо хитрости в реестре.Я создаю файл XML «powershell.exe.config» в домашнем каталоге PS (или в домашнем каталоге приложения, которое реализует хост PowerShell (например, MyApp.exe.config), я тоже попробовал такой сценарий).

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

x64 машина: файл также необходимо скопировать в C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0

PS Если это по-прежнему не помогает, не могли бы вы предоставитьточное сообщение об ошибке, которое вы получаете?

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