В модульном тесте анализатора кода Visual Studio 2017 не удалось загрузить пользовательский атрибут из внешней сборки - PullRequest
0 голосов
/ 25 января 2019

В Visual Studio 2017 создание расширения с помощью Analyzer с шаблоном исправления кода.Для кода тестового модуля анализатора кода он не может анализировать пользовательский атрибут во внешней DLL.Он показывает ErrorType NameSpace.MyCustomAttribute для attr.AttributeClass

Внешняя DLL предназначена для dot.net 4.6.Я добавил MetaReference через

.AddMetadataReference(projectId, ExternalDllReference);

. ExternalDLLReference загружается через

MetadataReference.CreateFromFile(typeof(MyAttribute).Assembly.Location)

Я также пытался вручную загрузить сборку через фиксированное местоположение.Тот же результат.

Код модульного теста c # довольно прост.Для пользовательского атрибута, определенного в строке модульного теста, он загружается правильно.Это просто атрибут во внешней DLL, загруженный неправильно.

Я пробовал аналогичный атрибут (TestMethod, определенный в тестовой среде), который имеет тот же результат, поэтому он не выглядит уникальным для моей пользовательской DLL.

var test = @"
using System;
using MyCustom.Attributes;

namespace ConsoleApplication1
{ 
    public class Custom2Attribute : Attribute
    {
    }

    [Custom2]
    [DataSynchronizationContract(ClientSynchronizationMode.AllowClientChanges, DatabaseSynchronizationMode.Automatic)] 
    public class TestClass
    {   
        [DataSynchronizationMember]
        [Custom2]
        public string PatientID { get; set; } 

        [DataSynchronizationMember(Client = ClientSynchronizationMode.DenyClientChanges, Database = DatabaseSynchronizationMode.NotSynchronized)]
        public string OrderID { get; set; } 
    }
}";

"Custom2Attribute" анализируется правильно.Но DataSynchronizationContract и DataSynchronizationMember (определенные во внешней DLL) анализируются как ErrorType для attr.AttributeClass

Это ошибка, которую я получаю:

((Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol) attr.AttributeClass) .DefaultMarshallingCharSet 'вызвала исключение типа' System.InvalidOperationException

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