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

标签 c# .net visual-studio nuget

我想同时在我的项目 (A) 和依赖的 Nuget 包 (B) 中工作,而不需要在每次更改时都发布 nuget 包。

是否可以在构建调试时从解决方案 (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 包,公钥 token 、版本等是不同的。 您不能将其更改为:

  <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, 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>
  </ItemGroup>

ItemGroup 元素中的 Condition 属性负责调试和发布之间的工作。

关于c# - 在 Debug 中使用 Project Reference,在 Release 中使用 Nuget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45008515/

相关文章:

c# - 从 C# 调用和等待 F# 异步方法

c# - 以编程方式将 C# 类添加到项目

c# - 在 ASP.NET MVC 中通过重定向传递复杂对象?

.net - 在 TFS 2010 中是否有任何等效于报告者(或更改 "Created By"字段的方法)

c# - 具有动态列和行的 DevExpress WPF GridControl

visual-studio - 更新到 15.1.26403.00 后,Visual Studio 2017 工具栏图标丢失

c# - 如何将 SVG 文件转换为 WMF 格式?

c# - .NET序列化: Best practice to map classes to elements and properties to attributes?

c# - 如何让 TortoiseSVN (v1.6.13) 中的忽略模式与 Visual Studio (C#) 文件一起正常工作?

visual-studio - Visual Studio-发布到多个位置?