У меня проблема при выполнении модульных тестов на сервере сборки в одном конкретном проекте с использованием Moq и AutoFixture.AutoMoq. Это ошибка:FileLoadException: Moq и Moq.resources
System.IO.FileLoadException : Could not load file or assembly 'Moq, Version=4.1.1308.2120,
Culture=neutral, PublicKeyToken=69f491c39445e920' or one of its dependencies. The located
assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040) at Ploeh.AutoFixture.AutoMoq.MockPostprocessor.Create(Object
request, ISpecimenContext context)
Проект построен на .NET 4.5.1 и использует следующие пакеты NuGet (эти версии также используются во всем растворе):
<package id="AutoFixture" version="3.40.1" targetFramework="net451" />
<package id="AutoFixture.AutoMoq" version="3.40.1" targetFramework="net451" />
<package id="Moq" version="4.2.1510.2205" targetFramework="net451" />
Это один из неисправного испытаний (с использованием XUnit 2.0):
[Fact]
public void SutIsIMessageConverterService()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var sut = fixture.Create<XmlValidationConverterService>();
Assert.IsAssignableFrom<IMessageConverterService>(sut);
}
Этот проект имеет сборочный связывания переадресацией (но безрезультатно):
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1510.2205" newVersion="4.2.1510.2205" />
</dependentAssembly>
</assemblyBinding>
Использование FUSLOGVW.exe
на сервере сборки я нашел больше информации (в первую я предположил, Moq не имеет никаких зависимостей):
LOG: DisplayName = Moq.resources, Version=4.2.1510.2205, Culture=en-US, PublicKeyToken=69f491c39445e920 (Fully-specified)
LOG: Appbase = file:///D:/ProjectName.Tests
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = C:\Users\BuildServerUserName\AppData\Local\Temp\ddf02945-045c-408c-a648-ec5325032f0a
LOG: AppName = ddf02945-045c-408c-a648-ec5325032f0a
Calling assembly : Moq, Version=4.2.1510.2205, Culture=neutral, PublicKeyToken=69f491c39445e920.
LOG: This bind starts in default load context.
LOG: Using application configuration file: D:\ProjectName.Tests.dll.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Moq.resources, Version=4.2.1510.2205, Culture=en-US, PublicKeyToken=69f491c39445e920
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///D:/ProjectName.Tests/en-US/Moq.resources.DLL.
LOG: Attempting download of new URL file:///D:/ProjectName.Tests/en-US/Moq.resources/Moq.resources.DLL.
LOG: Attempting download of new URL file:///D:/ProjectName.Tests/en-US/Moq.resources.EXE.
LOG: Attempting download of new URL file:///D:/ProjectName.Tests/en-US/Moq.resources/Moq.resources.EXE.
LOG: All probing URLs attempted and failed.
Так Moq
зависит от Moq.resources
и она не может быть найден.
Кто-нибудь знает, почему он ищет это (что это такое?) И как я могу это исправить?
Какая версия TFS вы используете? Вы используете сборку XAML или vNext? –
@ Cece-MSFT TFS 2013 и шаблон построения XAML. – bump
Версия AutoFixture версии 3.40.1 больше не доступна. Для всех продуктов были доступны новые версии. Рассмотрим обновление. –