为了用户授权,我只想为每个用户包含特定的模块。因此,我进行了如下的条件编译配置。
<DefineConstants>TRACE;DEBUG;SAMPLECONSTANT1</DefineConstants>
并且像这样编辑了项目文件:
<ProjectReference Include="..\Solution1.Modules.Module1\Solution1.Modules.Module1.csproj" Condition="$(DefineConstants.Contains('SAMPLECONSTANT1'))">
<Project>{4E378BD0-4FF8-4160-9331-1ECBFD2B6F30}</Project>
<Name>Solution1.Modules.Module1</Name>
</ProjectReference>
针对这种情况,如果DefineConstants
包含SAMPLECONSTANT1
,我想要添加对项目Module1
的引用;但无论我在DefineConstants
中放什么,解决方案始终会加载Module1
项目。 我做错了什么吗?
更新:实际上我的代码是正确的。请参见J0e3gan的答案。 Visual Studio UI不反映项目References
文件夹中的条件引用。因此,在任何给定的配置或平台选择下,所有引用都是可见的。 另一方面,编译器和IntelliSense知道有条件的引用,并在构建过程中以正确的设置进行错误通知和视觉反馈。