c# – 在Debug中使用Project Reference,在Release中使用Nuget

我想同时在我的项目(A)和一个从属Nuget包(B)中工作,而不需要在每次更改时释放nuget包.

在构建Debug时,是否可以从解决方案(A)中执行项目引用Nuget项目(B).构建Release时使用Source中的Nuget包?

解决方法

一种方法是手动编辑csproj文件.
如果您当前已经引用了NuGet包,那么您将在csproj文件中有一个部分,如下所示:
....
<ItemGroup>
  <Reference Include="log4net,Version=2.0.8.0,Culture=neutral,PublicKeyToken=669e0ddf0bb1aa2a,processorArchitecture=MSIL">
    <HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
    <Private>True</Private>
  </Reference>
  <Reference Include="System" />
  <Reference Include="System.Core" />
  <Reference Include="System.Xml.Linq" />
  <Reference Include="System.Data.DataSetExtensions" />
  <Reference Include="Microsoft.CSharp" />
  <Reference Include="System.Data" />
  <Reference Include="System.Xml" />
</ItemGroup>
....

在此示例中,使用log4net.对于您的NuGet包,公钥令牌,版本等是不同的.
你无法改变它:

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Anycpu' ">
    <Reference Include="log4net">
      <HintPath>Debug\log4net.dll</HintPath>
      <Private>True</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Anycpu' ">
    <Reference Include="log4net,processorArchitecture=MSIL">
      <HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
      <Private>True</Private>
    </Reference>
  </ItemGroup>

ItemGroup元素中的Condition属性在调试和发布之间执行作业.

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么