У нас есть разрабатываемый проект ASP.NET MVC 5, который зависит от проектов из другого решения. Другое решение — это общие библиотеки классов, которые мы публикуем в виде пакетов NuGet. Когда мы выпускаем, мы компилируем проект и получаем его из репозитория NuGet, но пока мы находимся в стадии разработки, мы берем ссылку из папки bin этого проекта.
Чтобы это заработало, мы сделали следующий «хак» для файла csproj нашего проекта ASP.NET (мы вручную отредактировали файл csproj xml и изменили ссылку):
<Reference Include="Common.Utilities, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath Condition=" '$(Configuration)' == 'Debug' ">..\..\..\Common\Common.Utilities\bin\$(Configuration)\Common.Utilities.dll</HintPath>
<HintPath Condition=" '$(Configuration)' != 'Debug' ">..\..\..\..\ExtrnBin\NuGetPackages\Common.Utilities.1.0.0.8\lib\net451\Common.Utilities.dll</HintPath>
</Reference>
поэтому, когда мы компилируем отладку, она берет из папки проекта библиотеки классов, а когда мы компилируем выпуск, она берет из загруженного NuGet. Это очень полезно для быстрой разработки, поскольку нам не нужно повторно публиковать новый NuGet для каждого изменения.
Сейчас мы тестируем ASP.NET 5, и зависимости больше не определяются в файле csproj
, а в файле project.json
. Итак, если мы добавим ссылку, мы получим что-то вроде этого в project.json
:
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"Microsoft.ApplicationInsights.AspNet": "1.0.0-rc1",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
"Common.Utilities": "1.0.0.8-*"
}
он также создает папку-оболочку и копирует DLL в папку lib\dnx\451
.
Как мы можем настроить что-то похожее на то, что у нас было раньше, для поддержки двух конфигураций сборки?