{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/17558","repository_url":"https://api.github.com/repos/dotnet/roslyn","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/17558/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/17558/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/17558/events","html_url":"https://github.com/dotnet/roslyn/pull/17558","id":211931864,"number":17558,"title":"Produce ref assemblies from command-line and msbuild","user":{"login":"jcouv","id":12466233,"avatar_url":"https://avatars1.githubusercontent.com/u/12466233?v=3","gravatar_id":"","url":"https://api.github.com/users/jcouv","html_url":"https://github.com/jcouv","followers_url":"https://api.github.com/users/jcouv/followers","following_url":"https://api.github.com/users/jcouv/following{/other_user}","gists_url":"https://api.github.com/users/jcouv/gists{/gist_id}","starred_url":"https://api.github.com/users/jcouv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcouv/subscriptions","organizations_url":"https://api.github.com/users/jcouv/orgs","repos_url":"https://api.github.com/users/jcouv/repos","events_url":"https://api.github.com/users/jcouv/events{/privacy}","received_events_url":"https://api.github.com/users/jcouv/received_events","type":"User","site_admin":false},"labels":[{"id":166673288,"url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-Compilers","name":"Area-Compilers","color":"5319e7","default":false},{"id":197452922,"url":"https://api.github.com/repos/dotnet/roslyn/labels/cla-already-signed","name":"cla-already-signed","color":"009800","default":false}],"state":"open","locked":false,"assignee":{"login":"jcouv","id":12466233,"avatar_url":"https://avatars1.githubusercontent.com/u/12466233?v=3","gravatar_id":"","url":"https://api.github.com/users/jcouv","html_url":"https://github.com/jcouv","followers_url":"https://api.github.com/users/jcouv/followers","following_url":"https://api.github.com/users/jcouv/following{/other_user}","gists_url":"https://api.github.com/users/jcouv/gists{/gist_id}","starred_url":"https://api.github.com/users/jcouv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcouv/subscriptions","organizations_url":"https://api.github.com/users/jcouv/orgs","repos_url":"https://api.github.com/users/jcouv/repos","events_url":"https://api.github.com/users/jcouv/events{/privacy}","received_events_url":"https://api.github.com/users/jcouv/received_events","type":"User","site_admin":false},"assignees":[{"login":"jcouv","id":12466233,"avatar_url":"https://avatars1.githubusercontent.com/u/12466233?v=3","gravatar_id":"","url":"https://api.github.com/users/jcouv","html_url":"https://github.com/jcouv","followers_url":"https://api.github.com/users/jcouv/followers","following_url":"https://api.github.com/users/jcouv/following{/other_user}","gists_url":"https://api.github.com/users/jcouv/gists{/gist_id}","starred_url":"https://api.github.com/users/jcouv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcouv/subscriptions","organizations_url":"https://api.github.com/users/jcouv/orgs","repos_url":"https://api.github.com/users/jcouv/repos","events_url":"https://api.github.com/users/jcouv/events{/privacy}","received_events_url":"https://api.github.com/users/jcouv/received_events","type":"User","site_admin":false}],"milestone":null,"comments":7,"created_at":"2017-03-05T05:36:06Z","updated_at":"2017-03-16T16:55:41Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/17558","html_url":"https://github.com/dotnet/roslyn/pull/17558","diff_url":"https://github.com/dotnet/roslyn/pull/17558.diff","patch_url":"https://github.com/dotnet/roslyn/pull/17558.patch"},"body":"Relates to https://github.com/dotnet/roslyn/issues/2184\r\n\r\nThere are two command-line parameters (`/refout:` and `/refonly`) which map to `CommonCommandLineArguments.OutputRefFileName` and `EmitOptions.EmitMetadataOnly`.\r\n\r\nIf `/refonly` is specified, the ref assembly will be output as the primary output (to the `/out` path) and no `/refout` path is allowed. (This maintins the previous behavior for the `EmitOptions.EmitMetadataOnly` flag)\r\nAlso, if `/refonly` is specific, the no PDB will be generated (despite any command-line parameters to the contrary).\r\n\r\nIf `/refout` is specified, then the assembly is output as the primary output (to `/out` path) as usual, and the ref assembly is output to `/refout` path.\r\n\r\n## Background:\r\nThe compiler already supports emitting \"metadata-only\" assemblies. This is used by the IDE for cross-language dependencies. Those include private members, but do not include any method bodies.\r\n\r\nWe will be introducing a second concept, which is \"reference assemblies\" (also called skeleton assemblies). Those are a further stripped down versions metadata-only assemblies (they won't include private types or members, for instance). They will be used for build scenarios. Producing ref assemblies will be driven by the `/refonly` and `/refout` parameters.\r\nThe guiding principle of ref assemblies is that they should have the minimum amount of stuff to preserve the compile-time behavior of consumers. \r\n\r\nBut, as a starting point (to unblock work on msbuild), we are using metadata-only assemblies as a close approximation of ref assemblies. That gives us many of the benefits of ref assemblies at much lower cost. As we narrow down what is included in ref assemblies (see #17612), the two concepts will diverge. When they do, we will likely need specific emit or compilation options (TBD) to indicate that we're producing ref assemblies.\r\n\r\nFiled https://github.com/dotnet/roslyn/issues/17612 for refining what changes and diagnostics should affect ref assemblies."},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/287121739","html_url":"https://github.com/dotnet/roslyn/pull/17558#issuecomment-287121739","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/17558","id":287121739,"user":{"login":"AlekseyTs","id":10522107,"avatar_url":"https://avatars3.githubusercontent.com/u/10522107?v=3","gravatar_id":"","url":"https://api.github.com/users/AlekseyTs","html_url":"https://github.com/AlekseyTs","followers_url":"https://api.github.com/users/AlekseyTs/followers","following_url":"https://api.github.com/users/AlekseyTs/following{/other_user}","gists_url":"https://api.github.com/users/AlekseyTs/gists{/gist_id}","starred_url":"https://api.github.com/users/AlekseyTs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlekseyTs/subscriptions","organizations_url":"https://api.github.com/users/AlekseyTs/orgs","repos_url":"https://api.github.com/users/AlekseyTs/repos","events_url":"https://api.github.com/users/AlekseyTs/events{/privacy}","received_events_url":"https://api.github.com/users/AlekseyTs/received_events","type":"User","site_admin":false},"created_at":"2017-03-16T16:55:41Z","updated_at":"2017-03-16T16:55:41Z","body":"It looks like there are some legitimate test failures."}}
{"actor":{"display_login":"AlekseyTs"}}