2014-12-30 3 views
1

Я в процессе перемещения существующего решения на ASP.NET vNext. Мое решение - традиционное приложение N-уровня. Имея это в виду, решение имеет четыре проекта. Эти четыре проекта организованы следующим образом:Перемещение решения в ASP.NET vNext - Невозможно ссылаться на сборку

/backend 
    /library 
    Sample.cs 
    project.json 
    /web 
    project.json 
/test 
    /library 
    SampleTest.cs 
    project.json 
    /web 
    project.json 
global.json 

Короче говоря, проект web ссылается на проект library. Проект /test/library/ предназначен для тестирования проекта library. Проект /test/web/ предназначен для тестирования проекта web. Моя проблема заключается в том, что я не могу ссылаться на проект library из моего проекта test. Если я пытаюсь ссылаться на класс в library, я получаю сообщение об ошибке, которая говорит:

System.IO.FileLoadException: Could not load file or assembly 'library' or one of 
its dependencies. General Exception (Exception from HRESULT: 0x80131500) 
System.IO.FileLoadException: Could not load file or assembly 'library' or one of 
its dependencies. General Exception (Exception from HRESULT: 0x80131500) 
File name: 'library' ---> Microsoft.Framework.Runtime.Roslyn.RoslynCompilationEx 
ception: C:\Projects\MySolution\test\library\SampleTest.cs(21,7 
): error CS0246: The type or namespace name 'Sample' could not be found (
are you missing a using directive or an assembly reference?) 

Вот содержание моих связанных файлов

/backend/library/project.json

{ 
    "version":"3.0.0.0", 
    "description":"This is the app library", 
    "compilationOptions": { 
    "warningsAsErrors": true 
    }, 
    "dependencies": { 
    "Microsoft.Data.Common":"0.1.0.0-alpha-build-0137" 
    }, 
    "code": [ "**\\*.cs", "..\\Shared\\*.cs" ], 
    "frameworks": { 
    "net45": {} 
    } 
} 

/backend/library/Sample.cs

using System; 
using System.Collections.Generic; 

using System.Data; 
using System.Data.Common; 
using System.Data.SqlClient; 

using System.Linq; 
using System.Text; 

namespace MySolution.Library 
{ 
    public class Sample 
    { 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public void Save() 
    { 
    } 
    } 
} 

/test/library/project.json

{ 
    "commands": { 
    "test": "Xunit.KRunner" 
    }, 
    "dependencies": { 
    "Xunit.KRunner": "1.0.0-beta1" 
    }, 
    "frameworks": { 
    "aspnet50": { }, 
    "aspnetcore50": { } 
    } 
} 

/test/library/SampleTest.cs

using System.IO; 
using Microsoft.Framework.Runtime; 
using Xunit; 

namespace MySolution.Library 
{ 
    public class SampleTest 
    { 
    [Fact] 
    public void Save() 
    { 
     Sample sample = new Sample(); 
     sample.Save(); 
     Assert.NotNull(sample); 
    } 
    } 
} 

global.json

{ 
    "sources": [ "backend/library" ] 
} 

Что я делаю неправильно? Почему я не могу ссылаться на мой проект library из моего проекта test?

Спасибо!

ответ

0
  1. В global.json Измените sources на ["backend","test"]
  2. Вы пропускаете library ссылку в тестовом проекте:

    "dependencies": { 
        "library": "", 
        "Xunit.KRunner": "1.0.0-beta1" 
    }, 
    
+0

Если добавить 'library' в' тест \ Library \ project.json ', как показано в # 2, я получаю сообщение об ошибке. Если я запустил 'kpm restore', то я получаю ошибку:' TODO: ссылки на циклическую зависимость не поддерживаются. Пакет 'library' .'. Если я запустил тест, я получаю сообщение об ошибке: «Процесс завершается из-за StackOverflowException.' – user70192

+0

Просто, чтобы исключить некоторые другие проблемы, можете ли вы попробовать переименовать тестовый проект на что-то еще? Как 'library.test' –

+0

bravo !. Я переименовал каталог '/ test/library' в' test/library-tests', и он сработал. Это похоже на хак. Однако он работает. Спасибо за помощь! – user70192