none
Web камера и библиотека Microsoft.Expression.Encoder RRS feed

  • Вопрос

  • Здравствуйте, я использую библиотеку Microsoft.Expression.Encoder sdk Я написал программу, она работает если установить Encoder 4. Но если удалить Encoder 4 и добавить ссылку на библиотеки sdk Encoder 4 то же работает,  но нет возможности изменять разрешение, так как в строке job.OutputFormat.VideoProfile.Size = new Size(640, 480); выбивает исключение "Необработанное исключение типа "System.TypeInitializationException" в Microsoft.Expression.Encoder.dll
    Дополнительные сведения: Инициализатор типа "Microsoft.Expression.Encoder.SkuManager" выдал исключение." Сижу уже не один день понять не могу по какой причине это происходит. Помогите пожалуйста.

    9 января 2017 г. 18:05

Ответы

Все ответы

  • Добрый день.

    Отсутствует сборка от которой есть зависимость у используемых. При установке SDK, она видимо ставиться в GAC или лежит в папке с используемыми сборками.

    10 января 2017 г. 5:45
    Отвечающий
  • В SDK просто библиотек больше нет, а подключил я их всех, ошибку вызывает именно в подключенной библиотеки Microsoft.Expression.Encoder.dll Пробно-опытным путем я установил Encoder 4 и удалил все файлы кроме sdk вручную и она работает, проанализировав инсталятор пришел к выводу что он вносит какие то изменения в реестр и при работе его библиотек они как то взаимодействуют. Получается нет возможности без дополнительной установки sdk использовать мою программу? Если это так то очень жаль.
    10 января 2017 г. 5:59
  • приведите вывод Exception.ToString()

    помимо отсуствия сборки, это может быть отсутствие определенного ключа в реестре

    должен ли SDK программы вообще работать без этой программы? тем более учитывая что часть ее функций доступна только в платной версии

    --- Добавлено ---

    "Получается нет возможности без дополнительной установки sdk использовать мою программу?"

    Можно попробовать отследить какие именно ключи реестра требуются для запуска нужных вам функций, и подсадить их на целевую систему. Вопрос только, как на это смотрит лицензионное соглашение


    • Изменено VadimTagil 10 января 2017 г. 7:45 Добавлено
    10 января 2017 г. 6:03
  • приведите вывод Exception.ToString()

    помимо отсуствия сборки, это может быть отсутствие определенного ключа в реестре

    должен ли SDK программы вообще работать без этой программы? тем более учитывая что часть ее функций доступна только в платной версии

    --- Добавлено ---

    "Получается нет возможности без дополнительной установки sdk использовать мою программу?"

    Можно попробовать отследить какие именно ключи реестра требуются для запуска нужных вам функций, и подсадить их на целевую систему. Вопрос только, как на это смотрит лицензионное соглашение



    Да, сейчас сделал снимок реестра и буду работать над ним, так как дело думаю в нем. А вот есть ли смысл подробно рассматривать Exception.ToString() если внести в dll изменения все равно не получится. Я так понял там dll работает с самим реестром. а на счет лицензии не знаю, тем более что программу пишу для бесплатного использования.
    10 января 2017 г. 8:44
  • "А вот есть ли смысл подробно рассматривать Exception.ToString()"

    Есть. 

    1. System.TypeInitializationException происходит при необработанном исключении в конструкторе типа, и в InnerException находиться первоначальное исключение. Соответственно, в его тексте может быть полезная информация.

    2. Трассировка стека поможет понять, на каком именно методе падает программа, что тоже может быть полезным.

    10 января 2017 г. 9:32
  • Сделал Exception.ToString() если честно не особо пойму как это может мне помочь, из этой информация и только подтверждает мои слова что требуется переустановка sdk, но мне надо что бы все эти библиотеки шли с моим приложением без дополнительной установки. Посмотрел изменения реестра после установки sdk Encoder 4 слишком много изменений вносит, какие и за что отвечают сложно разобраться, вручную  вбивать или удалять довольно трудоемко, пока решения для себя не нашел.  

    "System.TypeInitializationException: Инициализатор типа \"Microsoft.Expression.Encoder.SkuManager\" выдал исключение. ---> System.Resources.MissingSatelliteAssemblyException: Сопровождающая сборка с именем \"Microsoft.Expression.Encoder.resources.dll, PublicKeyToken=31bf3856ad364e35\" для резервной культуры \"en\" не может быть обнаружена или загружена. Обычно это обусловлено неисправностью при установке. Возможно, следует переустановить или восстановить приложение.

    в System.Resources.ManifestBasedResourceGroveler.HandleSatelliteMissing()\ 

    в System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)

    в System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) 

    в System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)\r\n   в System.Resources.ResourceManager.GetString(String name, CultureInfo culture) 

    в MS.Internal.Expression.Encoder.Properties.StringTable.get_InvalidLicening()

    в Microsoft.Expression.Encoder.SkuManager.GetAssemblyPath()

    в Microsoft.Expression.Encoder.SkuManager.ValidLicense()

    в Microsoft.Expression.Encoder.SkuManager.InitSkuData()

    в Microsoft.Expression.Encoder.SkuManager.get_CurrentSku()

    в Microsoft.Expression.Encoder.SkuManager.get_IsPro()

    в Microsoft.Expression.Encoder.SkuManager.DetectDisabledSku()

    в Microsoft.Expression.Encoder.SkuManager..cctor()

      --- Конец трассировки внутреннего стека исключений ---

    в Microsoft.Expression.Encoder.SkuManager.IsFeaturedSupported(Feature feature)

    в Microsoft.Expression.Encoder.FeatureIDAttribute.get_IsFeatureEnabled()

    в MS.Internal.Expression.Encoder.FastProperties.FastPropertyCreate.ShouldAddProp(IFastProperty property, PropertyType propType)

    в MS.Internal.Expression.Encoder.FastProperties.FastPropertyCreate.CreatePropertiesArray[T](Type classType, PropertyType propType)

    в MS.Internal.Expression.Encoder.FastProperties.FastPropertyCreate.GetProperties(Type classType, PropertyType propType)

    в Microsoft.Expression.Encoder.PropertyChangedImpl.GetProperties(Type type)

    в Microsoft.Expression.Encoder.PropertyChangedImpl..ctor(IPropertyChangedImplTarget obj, Boolean fCheckWritable)

    в Microsoft.Expression.Encoder.PropertyChangedImpl..ctor(IPropertyChangedImplTarget obj)

    в Microsoft.Expression.Encoder.PropertyChangedImpl..ctor(IPropertyChangedImplTarget obj, Boolean fCheckWritable)

    в Microsoft.Expression.Encoder.PropertyChangedImpl..ctor(IPropertyChangedImplTarget obj)

    в Microsoft.Expression.Encoder.Profiles.VideoProfile.set_Size(Size value)\r\n 

    в EE4Test.frmEE4WebCam.btnStartStopRecording_Click(Object sender, EventArgs e) в c:\\Users\\Андрей\\Desktop\\video examp;\\мой веб\\frmEE4WebCam.cs:строка 205"

    10 января 2017 г. 14:24
  • в качестве последней попытки, запихните Microsoft.Expression.Encoder.resources.dll в подкаталог en каталога с Microsoft.Expression.Encoder.dll

    ------

    http://uprightbassics.blogspot.ru/2014/01/how-to-deploy-expression-encoder-4-sdk.html - вот статья по теме, рассказывается как достать нужный файл из дистрибутива

    11 января 2017 г. 3:14
  • Только сейчас появилось, время и я вернулся к своему проекту, спасибо за помощь, вы действительно мне помогли, и ваш пример мне очень помог и у меня все получилось!
    23 января 2017 г. 12:33
  • Отлично, если какой-то ответ или ответы помогли вам с решением, отметьте их. Для этого под каждым ответом есть соотвествующая кнопка.
    23 января 2017 г. 14:21
    Отвечающий