C# conditional compilation if assembly exists

后端 未结 2 765
眼角桃花
眼角桃花 2021-01-15 05:53

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

相关标签:
2条回答
  • 2021-01-15 06:13

    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.

    0 讨论(0)
  • 2021-01-15 06:15

    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.

    0 讨论(0)
提交回复
热议问题