错误是:
An error occurred during the compilation of a resource required to process this request. Please review the following specific error details and modify your source code appropriately.
/CustomSubfolder/Views/_ViewImports.cshtml
One or more compilation references are missing. Possible causes include a missing ‘preserveCompilationContext’ property under ‘buildOptions’ in the application’s project.json.
The type or namespace name ‘MyNamespace’ does not exist in the namespace
‘Company.App’ (are you missing an assembly reference?)
测试代码:
using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Net; using System.Net.Http; using System.Threading.Tasks; namespace MvcProject.Tests { [TestClass] public class ControllerTests { protected TestServer Server { get; } protected HttpClient Client { get; } public ControllerTests() { Server = new TestServer(new WebHostBuilder() .UseContentRoot("../../../../MvcProject") .UseStartup<Startup>()); Client = Server.CreateClient(); } [TestMethod] public async Task Action_Valid_Renders() { HttpResponseMessage response = await Client.GetAsync("http://localhost/"); Assert.AreEqual(HttpStatusCode.OK,response.StatusCode); } } }
我正在使用面向.NET Framework 4.6.1的ASP.NET Core 1.1,我的MSTest .csproj文件如下所示:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net461</TargetFramework> <IsPackable>false</IsPackable> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="1.1.3" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" /> <PackageReference Include="MSTest.TestAdapter" Version="1.1.18" /> <PackageReference Include="MSTest.TestFramework" Version="1.1.18" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\MvcProject\MvcProject.csproj" /> </ItemGroup> </Project>
解决方法
您可以将以下手动构建步骤添加到测试项目以解决该问题.
<!-- Work around https://github.com/NuGet/Home/issues/4412. MVC uses DependencyContext.Load() which looks next to a .dll for a .deps.json. Information isn't available elsewhere. Need the .deps.json file for all web site applications. --> <Target Name="CopyDepsFiles" AfterTargets="Build" Condition="'$(TargetFramework)'!=''"> <ItemGroup> <DepsFilePaths Include="$([System.IO.Path]::ChangeExtension('%(_ResolvedProjectReferencePaths.FullPath)','.deps.json'))" /> </ItemGroup> <Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists('%(DepsFilePaths.FullPath)')" /> </Target>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。