I have a project with a reference that may or may not exist. I have code that uses that reference and I\'d like to compile it only if the assembly exists. I\'m thinking some
Maybe do it with a condition inside MSBUILD;
It would look something like it
<PropertyGroup>
<DefineConstants Condition="Exists('my.dll') ">$(DefineConstants);DLLEXISTS</DefineConstants>
</PropertyGroup>
and should go quite far down in your .csproj file.
This reads, roughly, as "redefine the constants by appending DLLEXISTS, if my.dll exists"
Now you should be able to do
#if DLLEXISTS
// your stuff here
#endif
You might need to fiddle around with the EXISTS expression to find an appropriate relative path.
No you cannot do this. You cannot define the result of a conditional compilation symbol at compile time.
If you want to get fancy you could write a new program which detects the missing assembly and modifies your source. You can then execute this program in the Pre-build event of your project.
The modification of the source could simply be the addition or removal of your suggested #define at the top of the source files.