c# - Visual Studio conditional project reference based on a constant -


for user authorization, want include specific module each user. configured conditional compilation this

<defineconstants>trace;debug;sampleconstant1</defineconstants> 

and edited project file this:

<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> 

for case want add reference project module1 if defineconstants contains sampleconstant1; no matter put in defineconstants, solution loads module1 project. did wrong here?

update: code correct. please see j0e3gan's answer. visual studio ui not reflect conditional references within references folder of project. therefore references visible in given configuration or platform selection. compiler , intellisense on other hand aware of conditional references, honoring correct settings both visual feedback , error notification during builds.

i suspect problem conditioning project reference module1, not whether include module1 in solution.

including project in solution (and hence loading solution) , project referencing project in solution 2 different things of course.

update:

if want condition project reference, joe wrobel wrote a related blog post should help. key takeaway wrap itemgroup contains projectreference condition in choose element - example:

<choose>   <when condition="$(defineconstants.contains('sampleconstant1'))">     <itemgroup>       <projectreference include="..\solution1.modules.module1\solution1.modules.module1.csproj">         <project>{4e378bd0-4ff8-4160-9331-1ecbfd2b6f30}</project>         <name>solution1.modules.module1</name>       </projectreference>       <!-- other projectreference elements -->     </itemgroup>   </when>   <otherwise>     <itemgroup>       <!-- other projectreference elements -->     </itemgroup>   </otherwise> </choose> 

from tests evening, works great condition project reference(s) on whether constant sampleconstant1 defined. however, note conditioned project references do not show in solution explorer under (would-be) referencing project's references folder - regardless whether conditioning constant defined.

to see conditioning worked, had build: with sampleconstant1 defined, referencing project built successfully while using class defined in module1 - expected; , without sampleconstant1 defined, referencing project failed build because class defined in module1 not resolved - expected.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -