NuGet - 根据选定的构建配置引用不同 DLL 的依赖项目

NuGet - Dependee project referencing different DLL according to selected build configuration

我是 NuGet 的新手,目前只是 researching/proof-of-concept 使用它:

是否可以打包 NuGet 包,使依赖项目(具有依赖项的项目)根据项目配置构建引用不同的 DLL?

示例:

Dependee-Debug.DLL -> References Dependency-Debug.DLL
Dependee-Release.DLL -> References Dependecy-Release.DLL

同样,对于 32-bit/64-bit 歧视,我需要重复此行为。如果可能的话,是否有教程可以在任何地方解释如何操作?我找不到任何关于此功能的提及。

可以在包安装期间 运行 PowerShell 脚本编辑 CSPROJ 文件以有条件地引用不同的依赖项。

检查 this 问题以获得一些有用的链接。

通过使用 PowerShell 脚本或使用自定义 MSBuild 目标文件,您应该能够根据当前构建配置引用不同的程序集。请注意,使用 MSBuild 目标文件将在 MonoDevelop 和 Xamarin Studio 中跨平台工作,而 PowerShell 脚本则不能。

NuGet 允许您包含一个 MSBuild 目标文件,这样您就可以更改构建时发生的事情。在 MSBuild 目标文件中,您可以获得引用并根据当前构建配置使它们成为条件。

在 NuGet 包的构建目录中,添加一个与 NuGet 包 ID 同名的 MSBuild .targets 文件。如果需要,您还可以将不同的 .targets 文件用于特定目标框架(例如 Net40),方法是将其放在 Net40 子目录下。

build\MyPackageId.targets

然后在 MSBuild .targets 文件中,您可以做一些简单的事情,例如有条件地添加引用。

<ItemGroup Condition=" '$(Platform)' == 'x86' ">
    <Reference Include="MyAssembly">
      <HintPath>x86\MyAssembly.dll</HintPath>
    </Reference>
</ItemGroup>
<ItemGroup Condition=" '$(Platform)' == 'x64' ">
    <Reference Include="MyAssembly">
      <HintPath>x64\MyAssembly.dll</HintPath>
    </Reference>
</ItemGroup>