Closed
Description
Hello there! I hope this is not just noise as this seems like a fairly common issue. In fact I've reported it in the past and was able to work around the issue years ago.
However, today on another project, I have run into it again and none of the reported workarounds (.csproj
settings, command line parameters, copying DLLs) seem to work.
.NET Version
dotnet --version
7.0.102
Steps to Reproduce
Execute from CLI:
mkdir coverlet-fails-to-resolve-mvc-razor
cd coverlet-fails-to-resolve-mvc-razor
mkdir webapp
pushd webapp
dotnet new webapp
popd
mkdir xunit-tests
pushd xunit-tests
dotnet new xunit
dotnet add reference ../webapp/webapp.csproj
dotnet add package coverlet.msbuild
popd
dotnet new sln
dotnet sln add webapp/webapp.csproj
dotnet sln add xunit-tests/xunit-tests.csproj
Add the following class to the web application project:
using Microsoft.AspNetCore.Mvc.Razor;
namespace webapp;
public static class Class1
{
public static IMvcBuilder AddLocalization(this IMvcBuilder mvcBuilder,
LanguageViewLocationExpanderFormat viewLocationExpanderFormat = LanguageViewLocationExpanderFormat.Suffix)
{
return mvcBuilder;
}
}
Add the following class to the xUnit project:
using webapp;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace xunit_tests;
public class Class1Tests
{
[Fact]
public void AddLocalizationSucceeds()
{
// arrange
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder();
IMvcBuilder mvcBuilder = webApplicationBuilder.Services.AddControllersWithViews();
// act
IMvcBuilder result = mvcBuilder.AddLocalization();
// assert
Assert.NotNull(result);
}
}
Execute from the CLI:
dotnet test /p:CollectCoverage=true
Expected Result
Determining projects to restore...
All projects are up-to-date for restore.
webapp -> /Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/webapp/bin/Debug/net7.0/webapp.dll
xunit-tests -> /Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/bin/Debug/net7.0/xunit-tests.dll
Test run for /Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/bin/Debug/net7.0/xunit-tests.dll (.NETCoreApp,Version=v7.0)
Microsoft (R) Test Execution Command Line Tool Version 17.4.0 (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
Passed! - Failed: 0, Passed: 2, Skipped: 0, Total: 2, Duration: 226 ms - xunit-tests.dll (net7.0)
Calculating coverage result...
Generating report '/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/coverage.json'
+--------+-------+--------+--------+
| Module | Line | Branch | Method |
+--------+-------+--------+--------+
| webapp | 5.66% | 0% | 6.25% |
+--------+-------+--------+--------+
+---------+-------+--------+--------+
| | Line | Branch | Method |
+---------+-------+--------+--------+
| Total | 5.66% | 0% | 6.25% |
+---------+-------+--------+--------+
| Average | 5.66% | 0% | 6.25% |
+---------+-------+--------+--------+
Actual Result
Determining projects to restore...
All projects are up-to-date for restore.
webapp -> /Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/webapp/bin/Debug/net7.0/webapp.dll
xunit-tests -> /Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/bin/Debug/net7.0/xunit-tests.dll
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : [coverlet] Unable to instrument module: /Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/bin/Debug/net7.0/webapp.dll [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : Coverlet.Core.Exceptions.CecilAssemblyResolutionException: AssemblyResolutionException for 'Microsoft.AspNetCore.Mvc.Razor, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. Try to add <PreserveCompilationContext>true</PreserveCompilationContext> to test projects </PropertyGroup> or pass '/p:CopyLocalLockFileAssemblies=true' option to the 'dotnet test' command-line [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Microsoft.AspNetCore.Mvc.Razor, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : --- End of inner exception stack trace --- [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Coverlet.Core.Instrumentation.NetstandardAwareAssemblyResolver.TryWithCustomResolverOnDotNetCore(AssemblyNameReference name) in /_/src/coverlet.core/Instrumentation/CecilAssemblyResolver.cs:line 215 [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Coverlet.Core.Instrumentation.NetstandardAwareAssemblyResolver.Resolve(AssemblyNameReference name) in /_/src/coverlet.core/Instrumentation/CecilAssemblyResolver.cs:line 127 [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.TypeReference.Resolve() [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.Mixin.CheckedResolve(TypeReference self) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.GetConstantType(TypeReference constant_type, Object constant) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.AddConstant(IConstantProvider owner, TypeReference type) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.AddParameter(UInt16 sequence, ParameterDefinition parameter, ParamTable table) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.AddParameters(MethodDefinition method) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.AddMethod(MethodDefinition method) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.AddMethods(TypeDefinition type) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.AddType(TypeDefinition type) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.AddTypes() [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.BuildTypes() [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.BuildModule() [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.MetadataBuilder.BuildMetadata() [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.ModuleWriter.<>c.<BuildMetadata>b__2_0(MetadataBuilder builder, MetadataReader _) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func`3 read) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.ModuleWriter.BuildMetadata(ModuleDefinition module, MetadataBuilder metadata) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Mono.Cecil.ModuleDefinition.Write(Stream stream, WriterParameters parameters) [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Coverlet.Core.Instrumentation.Instrumenter.InstrumentModule() in /_/src/coverlet.core/Instrumentation/Instrumenter.cs:line 337 [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Coverlet.Core.Instrumentation.Instrumenter.Instrument() in /_/src/coverlet.core/Instrumentation/Instrumenter.cs:line 153 [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
/Users/jdoe/.nuget/packages/coverlet.msbuild/3.2.0/build/coverlet.msbuild.targets(39,5): warning : at Coverlet.Core.Coverage.PrepareModules() in /_/src/coverlet.core/Coverage.cs:line 135 [/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/xunit-tests.csproj]
Test run for /Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/bin/Debug/net7.0/xunit-tests.dll (.NETCoreApp,Version=v7.0)
Microsoft (R) Test Execution Command Line Tool Version 17.4.0 (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
Passed! - Failed: 0, Passed: 2, Skipped: 0, Total: 2, Duration: 238 ms - xunit-tests.dll (net7.0)
Calculating coverage result...
Generating report '/Users/jdoe/src/dotnet/coverlet-fails-to-resolve-mvc-razor/xunit-tests/coverage.json'
+--------+------+--------+--------+
| Module | Line | Branch | Method |
+--------+------+--------+--------+
+---------+------+--------+--------+
| | Line | Branch | Method |
+---------+------+--------+--------+
| Total | 0% | 0% | 0% |
+---------+------+--------+--------+
| Average | 0% | 0% | 0% |
+---------+------+--------+--------+
Attempted Work Arounds
I have tried the recommended work arounds such as:
- Adding
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
to the.csproj
file(s) - Adding
<PreserveCompilationContext>true</PreserveCompilationContext>
to the.csproj
file(s) - Using the
/p:CopyLocalLockFileAssemblies=true
command line argument - Manually copying the DLL w/
webapp/bin/Debug/net7.0/refs/Microsoft.AspNetCore.Razor.dll xunit-tests/bin/Debug/net7.0
Unfortunately none of these resolve the issue.
Metadata
Metadata
Assignees
Labels
No labels