Skip to content

Remove obsolete or redundant conditional compilation symbols #501

@stakx

Description

@stakx

PR #495 removed approx. half of all conditional compilation symbols, but a few are left. This issue is a follow-up to @jonorossi comment in said PR:

After this is merged we can talk through these, more definitely need to go.

As to how more of those symbols can be removed, I would need to take a closer look. Right now, I'm assuming the following:

Conditional compilation symbol Remarks
FEATURE_SERIALIZATION Some serialization support was reintroduced in .NET Standard 2.0, e.g. all targeted platforms now support the [Serializable] attribute... but the binary serializer can't deal with e.g. Type nor delegates, so we can't easily enable this on .NET Core). But: This symbol is closely related to FEATURE_APPDOMAIN & FEATURE_ASSEMBLYBUILDER_SAVE, perhaps we could merge those into one.
FEATURE_REMOTING We can remove this iff we decide to give up support for remoting / IsTransparentProxy checks / MarshalByRefObject. (Is this something that's still used these days? For which types? I don't know.)
FEATURE_EVENTLOG We can remove this iff we deprecate Castle.Core.Logging.DiagnosticsLogger, which logs to Windows' event log.
FEATURE_SYSTEM_CONFIGURATION Tied to the facility in the Castle.Core.Resource namespace, which we could deprecate/remove.
FEATURE_TEST_PEVERIFY Needed for now, but I'm wondering whether we could offload the location of a PEVerify binary into the build scripts / MSBuild files. It might be neat to set an environment variable PEVERIFY to the PEVerify binary's location. (Setting an environment variable in an MSBuild project file might be non-trivial, but perhaps it can be done.)
FEATURE_TEST_COM .NET Core has some nominal COM support. It may not support functionality tied to CoCreateInstance, but AFAIK it does support COM interop and the COM attributes. So it may be possible to reduce usage of this attribute.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions