2017-08-11 189 views
0

我正在移动一个项目,使其成为nuget包。该项目中有预处理器指令来检查开发人员在哪个自定义构建配置中。如果他们在构建配置A中,则它将取消A服务设置(如果它们在B中),则它将取消B的设置。问题是,当我打包这个服务,并且nuget包在一个单独的进程中被使用,并且使用相同的构建配置时,它不尊重devs构建配置选项,因为nuget已经被编译了,无论它设置了什么设置。已经将它设置为一个nuget包中的3个dll。Nuget与Build配置

有没有办法根据自定义生成配置选择使用哪个nuget dll而无需修改csproj代码?

+0

如果这些配置如此不同,则生成3个具有不同ID的独立nuget软件包也可能是一个选项。或者外部配置(=>消耗项目需要设置库)等。 –

+1

@Dakota Kincer,这个问题的任何更新?你能从答案中得到有用的信息吗?如果没有,请让我知道免费。 –

+0

我已将答案标记为答案。目前,我们目前无法将我们的项目移至nuget,并选择暂时将其作为项目参考。未来有一些方法可以在构建配置之间切换。我们目前正在将其用作指向生产环境和登台环境的开关。 –

回答

1

有没有办法根据自定义构建配置选择使用哪个nuget dll而无需修改csproj代码?

这是不支持据我所知与NuGet。您只能在一个项目文件中使用一个具有特定构建配置的NuGet包。而且,NuGet现在只支持多个.NET框架版本,不支持多种配置。

如果您有不同的构建配置,您可以有不同的NuGet包。该项目由具有特定平台项目的图书馆作者特定使用,这些项目需要不同的NuGet包。

此外,不使用NuGet将程序集添加到项目可能会更简单。只需使用NuGet到pack the package with multiple dlls文件,然后直接参考您需要的条件和组件。