Skip to content
This repository has been archived by the owner on Jan 26, 2020. It is now read-only.

Latest commit

 

History

History
66 lines (44 loc) · 4.76 KB

README.md

File metadata and controls

66 lines (44 loc) · 4.76 KB

Fake Implementation

Build status Release MIT License
Removes instructions/variables from all of the methods in the given input assembly.

What is the point of this?

The point of this is being it allows developers to generate a "preview" assembly, that is, all of the implementation is removed out.

UPDATE

This tool has been superseded by (official) C# compiler (in 7.1 release).
Therefore I recommend using the official compiler option (-refonly), the concept is called "Reference-only assembly" (see docs).
And for more information, click here.
This tool is small and easy to use, but I don't know if there is anyone actually making the use of such concept in the wild.
This were supposed to be pushed towards Facepunch devs, for their prototype game called S&Box, but I don't think I have established this concept back in a day.
As it stands now, you can continue to use this tool, it will remain working for those of who used it without any problems in their build process.
I am closing this project as I believe it is final and stable to use. I no longer have much interest in developing this project any further.
Shutdown.

Usage scenario & More info

The main goal of this project is to provide support to 3rd-party .NET developers to build stuff for Your unreleased/internal software, and be ahead of time together.
If the XMLDoc file exists, it will be preserved for the generated assembly, and may be shared directly if you wish to provide original documentation to 3rd-party as well.
If the program is run successful, an output assembly will be named *-preview.
Linux (with mono) & Windows OS are both supported.

Running on Linux Running on Windows

Here is a small IL/C# inspection of the generated "preview" assembly (Mono.Cecil-preview.dll): IL Decompiled to C#

The generated "preview" assembly enables 3rd-party users to compile their project, but it is not going to run properly (yes, of course, this is normal and does not matter for us at all; the internal software is yet to be released at that point).
Because, a "preview" assembly is meant to be used as a reference for pure advantages of IDE features (such as IntelliSense, XMLDocs, etc).
Once the internal software becomes released, then 3rd-party users would simply just need to update their reference to use non-preview version.

Using the generated preview assembly in C#

Contribution

Visit the Contributor Guidelines for more details. All contributors are expected to follow our Code of Conduct.

Support

If you think you have found a bug or have a feature/enhancement request for Fake Implementation, use our issue tracker.

Before opening a new issue, please be kind and search to see if your problem has already been reported. Try to be as detailed as possible in your issue reports.
When creating an issue, clearly explain

  • What you were trying to do?
  • What you expected to happen?
  • What actually happened?
  • Steps to reproduce the problem.

Also include any other information you think is relevant to reproduce the problem.

License

Fake Implementation repository/code is freely distributed under the MIT license. See LICENSE file for more details.

Credits

It is made possible thanks to all dnlib and Mono.Cecil authors.

CaptainPRICE for developing Fake Implementation.