{"action":"opened","issue":{"url":"https://api.github.com/repos/jbevain/cecil/issues/216","labels_url":"https://api.github.com/repos/jbevain/cecil/issues/216/labels{/name}","comments_url":"https://api.github.com/repos/jbevain/cecil/issues/216/comments","events_url":"https://api.github.com/repos/jbevain/cecil/issues/216/events","html_url":"https://github.com/jbevain/cecil/issues/216","id":81125205,"number":216,"title":"Allow upstream consumers to override build settings.","user":{"login":"kzu","id":169707,"avatar_url":"https://avatars.githubusercontent.com/u/169707?v=3","gravatar_id":"","url":"https://api.github.com/users/kzu","html_url":"https://github.com/kzu","followers_url":"https://api.github.com/users/kzu/followers","following_url":"https://api.github.com/users/kzu/following{/other_user}","gists_url":"https://api.github.com/users/kzu/gists{/gist_id}","starred_url":"https://api.github.com/users/kzu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kzu/subscriptions","organizations_url":"https://api.github.com/users/kzu/orgs","repos_url":"https://api.github.com/users/kzu/repos","events_url":"https://api.github.com/users/kzu/events{/privacy}","received_events_url":"https://api.github.com/users/kzu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-05-26T20:34:53Z","updated_at":"2015-05-26T20:34:53Z","closed_at":null,"body":"Projects consuming and distributing Cecil in environments they\r\ndon't control (i.e. an addin inside VS or XS) risk having the\r\nenvironment load an incompatible version of Cecil from another\r\naddin or location (depending on the process/domain configuration\r\nand the probing paths set up for the host).\r\n\r\nTo shield from this issue, XS has forked Cecil, changed its\r\nassembly name and signing key, and now it has to maintain that\r\nfork in sync with upstream. Others with similar requirements\r\n(in particular, the Xamarin Visual Studio extension team now)\r\nwill need to do the same, with the added maintainability burden.\r\n\r\nThis commit provides a conditional import that allows products\r\nthat distribute Cecil to tweak settings that will affect its\r\nbuild, without having to fork the project unnecessarily. The\r\nMono.Cecil.overrides file is a plain MSBuild file with additional\r\nproperties that can exist anywhere upwards from the current Cecil\r\nrepo clone path, making it very flexible even if the project\r\nis submoduled.\r\n\r\nIt's imported before the C# targets so that changes to the\r\nassembly name, signing key, etc. are properly overwritten before\r\nthe C# targets process them."}}