我们有一个我们正在开发的 ASP.NET MVC 5 项目,它依赖于来自不同解决方案的项目。另一个解决方案是常见的类库,我们作为 NuGet 包发布。当我们发布时,我们编译项目并从 NuGet 存储库中获取它,但是当我们正在开发中时,我们从该项目的 bin 文件夹中获取引用。
为了让它工作,我们对 ASP.NET 项目的 csproj 文件执行了以下“hack”(我们手动编辑了 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
文件夹。
我们如何设置类似于我们之前的东西来支持 2 个构建配置?