我正在研究一种可以被两种类型的用户访问的库-公司员工,然后是其他所有人。公司员工可以从内部Nuget提要中访问多个不公开的Nuget程序包,为方便起见,我在帖子中将它们称为“专有”程序包。
我们在一个解决方案中有多个项目-例如项目A,项目B和项目C。项目A和项目B引用项目C,而项目C使用“专有”包。
我们想做的是提供一个具有两种不同构建选项的解决方案-一种用于公司员工,另一种用于公众。当公司员工构建解决方案时,它将引用并编译Project C,并提取“专有软件包”。当它由其他人构建时,Project A和Project B将不会引用Project C,并且Project C将不会被编译,也不会尝试提取“专有”包。
是否有关于如何最好地完成此操作的建议,或任何详细的博客显示了如何完成此操作?
我目前正在尝试设置两个不同的构建配置。在其中之一中,我尝试在build.props中定义这样的常量:
<PropertyGroup>
<!-- If build config is InternalEmployees -->
<DefineConstants>$(DefineConstants);InternalEmployees</DefineConstants>
</PropertyGroup>
然后在Project C中,我将以下内容添加到
<ItemGroup>
<PackageReference Condition=" $(DefineConstants).contains(InternalEmployees)' Include="ProprietaryPackage" Version="1.1.1" />
</ItemGroup>
然后在项目A和B中,我都尝试使用#if处理器指令
#if InternalEmployees
PropreitaryPackage.SomeMethod();
#endif
但是这目前不起作用-当我尝试构建时,由于告诉我找不到专有软件包而失败。