unit-testing - visual - why does the test explorer in vs 2017 not see the tests?



Сборка смешанного режима MSTest Ошибка в VS2015 (1)

Альтернатива 1: Конфигурация

Добавьте конфигурацию запуска в C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\TE.ProcessHost.Managed.exe.config :

<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>

Альтернатива 2: В Runtime

Это может перестать работать.

Просто добавьте этот класс в проект тестирования ( источник ):

using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public static class RuntimePolicyHelper
{
    [AssemblyInitialize]
    public static void SetPolicy(TestContext ctx)
    {
        var clrRuntimeInfo =
            (ICLRRuntimeInfo)RuntimeEnvironment.GetRuntimeInterfaceAsObject(
                Guid.Empty,
                typeof(ICLRRuntimeInfo).GUID);

        // Allow errors to propagate so as to fail the tests.
        clrRuntimeInfo.BindAsLegacyV2Runtime();
    }

    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("BD39D1D2-BA2F-486A-89B0-B4B0CB466891")]
    private interface ICLRRuntimeInfo
    {
        void xGetVersionString();
        void xGetRuntimeDirectory();
        void xIsLoaded();
        void xIsLoadable();
        void xLoadErrorString();
        void xLoadLibrary();
        void xGetProcAddress();
        void xGetInterface();
        void xSetDefaultStartupFlags();
        void xGetDefaultStartupFlags();

        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
        void BindAsLegacyV2Runtime();
    }
}

При попытке запуска модульных тестов, которые используют сборки смешанного режима в VS2015, тесты не могут выполняться с обычным сообщением:

System.IO.FileLoadException: сборка смешанного режима построена против версии «v2.0.50727» среды выполнения и не может быть загружена в среду выполнения 4.0 без дополнительной информации о конфигурации.

Создание app.config и добавление useLegacyV2RuntimeActivationPolicy к нему не имеет никакого эффекта - кажется, что эту конфигурацию невозможно изменить.

Это ранее работало без ручных шагов в VS2013.





mstest