![](/img/trans.png)
[英]How do I force an application compiled to target .NET Framework 4 to run under .NET framework 4.6.1?
[英]How do I configure target framework for VSTest 2015 to run a unit test built to use .net 4.6.1?
我正在嘗試使用VSTest.console.exe為Visual Studio 2015配置TeamCity以運行我的單元測試。
對測試運行器有效的唯一選項(即使在.runsettings文件中)是:
<!-- Framework35 | [Framework40] | Framework45 -->
我的.runsettings文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Configurations that affect the Test Framework -->
<RunConfiguration>
<MaxCpuCount>1</MaxCpuCount>
<!-- Path relative to solution directory -->
<ResultsDirectory>.\TestResults</ResultsDirectory>
<!-- [x86] | x64
- You can also change it from menu Test, Test Settings, Default Processor Architecture -->
<TargetPlatform>x86</TargetPlatform>
<!-- Framework35 | [Framework40] | Framework45 -->
<TargetFrameworkVersion>Framework45</TargetFrameworkVersion>
<!-- Path to Test Adapters -->
<TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>
</RunConfiguration>
</RunSettings>
當我將它設置為Framework45時,它告訴我:
[19:17:33][Step 2/2] VSTest executable: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\VSTest.console.exe
[19:17:33][Step 2/2] Command line params: [[Y:\TeamCity\BuildAgent1\work\f1cf88fd0bf6555\Javelin.Identity.Tests\bin\x64\Integration\Javelin.Identity.Tests.dll] [/Settings:test.runsettings] [/Logger:trx] [/Platform:x86]]
[19:17:33][Step 2/2] Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit
[19:17:33][Step 2/2] in directory: Y:\TeamCity\BuildAgent1\work\f1cf88fd0bf6555
[19:17:33][Step 2/2] JetBrains dotCover Console Runner 10.0.2. Build 104.0.20151218.125453
[19:17:33][Step 2/2] Copyright (c) 2009-2016 JetBrains s.r.o. All rights reserved.
[19:17:34][Step 2/2] [JetBrains dotCover] Coverage session started [3/1/2016 7:17:34 PM]
[19:17:38][Step 2/2] Microsoft (R) Test Execution Command Line Tool Version 14.0.24720.0
[19:17:38][Step 2/2] Copyright (c) Microsoft Corporation. All rights reserved.
[19:17:38][Step 2/2]
[19:17:39][Step 2/2] Starting test execution, please wait...
[19:17:39][Step 2/2] Test run will use DLL(s) built for framework Framework45 and platform X86. Following DLL(s) will not be part of run:
[19:17:39][Step 2/2] Javelin.Identity.Tests.dll is built for Framework None and Platform X64.
[19:17:39][Step 2/2] Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.
[19:17:39][Step 2/2] Error: None of the provided test containers match the Platform Architecture and .Net Framework settings for the test run. Platform: X86 .Net Framework: Framework45. Go to http://go.microsoft.com/fwlink/?LinkID=330428 for more details on managing these settings.
[19:17:39][Step 2/2]
當我將它設置為Framework46時,它告訴我:
[步驟2/2]錯誤:加載設置時發生錯誤。 錯誤:設置“RunConfiguration”無效。 為'TargetFrameworkVersion'指定的值'Framework46'無效..
這甚至應該適用於4.6.1嗎?
您可以將.RunSettings文件中TargetFrameworkVersion的值設置為以下值:
.NETFramework,版本= v4.6.1
我知道這是誤導,因為他們在這里的文件
我通過查看vstest.console.exe的help命令發現了這個
vstest.console.exe /?
其中顯示了:
--Framework|/Framework:<Framework Version>
Target .Net Framework version to be used for test execution.
Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.
Other supported values are Framework35, Framework40, Framework45 and FrameworkCore10.
然后我嘗試使用這些值中的任何一個並且它有效。 在我的例子中,它是.NET 4.5.2
.RunSettings文件的示例如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Configurations that affect the Test Framework -->
<RunConfiguration>
<!-- Path relative to solution directory -->
<ResultsDirectory>.\TestResults</ResultsDirectory>
<!-- [x86] | x64
- You can also change it from menu Test, Test Settings, Default Processor Architecture -->
<TargetPlatform>x64</TargetPlatform>
<!-- Framework35 | [Framework40] | Framework45 -->
<TargetFrameworkVersion>.NETFramework,Version=v4.5.2</TargetFrameworkVersion>
</RunConfiguration>
<!-- Configurations for data collectors -->
<DataCollectionRunSettings>
<DataCollectors>
</DataCollectors>
</DataCollectionRunSettings>
<!-- Adapter Specific sections -->
<!-- MSTest adapter -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<AssemblyResolution>
<Directory path=".\bin" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>
這是vstest.console中已確認的已知問題 。 您可以嘗試在問題中提出的解決方法(通過runsettings文件指定框架,並將'Framework'參數值保留為默認值)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.