PowerShell встроенный C # с использованием ObservableCollection - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь добавить тип в powershell из кода c #, который использует коллекцию observablecollection. Я пытался в течение дня или двух, и я ничего не могу заставить работать.

Я пытался придумать модель представления для wpf, не полагаясь на какие-либо дополнительные модули powershell.

Это последнее, что я придумал:

$code = @"

using System;
using System.Collections.ObjectModel;

namespace Test
{
    public class TestClass
    {
        public ObservableCollection<string> Items { get; set; }

        public TestClass()
        {
            Items = new ObservableCollection<string>();
        }
    }
}    

"@


Add-Type -TypeDefinition $code -ReferencedAssemblies @("WindowsBase") -Language CSharpVersion3

Я не могу получить ошибку:

Add-Type: c: \ Users \ ncollier \ AppData \ Local \ Temp \ wjq4ciwc.0.cs (9): не удалось найти тип или имя пространства имен ObservableCollection ( вам не хватает директивы using или ссылки на сборку?)

Редактировать Я пытаюсь запустить это в PowerGUI, но если я запускаю его в ISE PowerShell, возможно, это работает ... Есть ли что-то, что я мог бы делать неправильно в PowerGUI?

1 Ответ

1 голос
/ 28 марта 2012

попробуйте просто:

Add-Type -TypeDefinition $code

В моем поле я могу добавить тип.

Редактировать после комментария:

Я обнаружил, что с помощью powershell.exe.config (или для ISEpowershell_ise.exe.config) для загрузки .net 4.0 нет необходимости добавлять ReferencedAssemblies (в этом коде другие ситуации требуют ссылки на system.core или могут нуждаться в других ссылках на сборки).Я подозреваю, что PowerGui также загружает .net 4.0, но я могу это проверить.Вы можете примерить PowerGui:

 [appdomain]::currentdomain.getassemblies()

и посмотреть, есть ли версии сборок 4.0.xxxx

...