Search code examples
c#conditional-compilation

C# conditional compilation if assembly exists


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 something along the lines of:

#if ASSEMBLY_EXISTS
    AssemblyClass.DoSomething();
#endif

I could put a #define at the top and comment/uncomment as needed, but I'd prefer if it could just somehow know if it's there without my manual intervention, which leads me to believe that #if won't work for this situation. Is there another way to conditionally compile based on whether an assembly exists?


Solution

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