{"action":"created","issue":{"url":"https://api.github.com/repos/Microsoft/msbuild/issues/1453","repository_url":"https://api.github.com/repos/Microsoft/msbuild","labels_url":"https://api.github.com/repos/Microsoft/msbuild/issues/1453/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/msbuild/issues/1453/comments","events_url":"https://api.github.com/repos/Microsoft/msbuild/issues/1453/events","html_url":"https://github.com/Microsoft/msbuild/issues/1453","id":194175889,"number":1453,"title":"Predefined Property/ItemGroup elements","user":{"login":"aL3891","id":2126346,"avatar_url":"https://avatars.githubusercontent.com/u/2126346?v=3","gravatar_id":"","url":"https://api.github.com/users/aL3891","html_url":"https://github.com/aL3891","followers_url":"https://api.github.com/users/aL3891/followers","following_url":"https://api.github.com/users/aL3891/following{/other_user}","gists_url":"https://api.github.com/users/aL3891/gists{/gist_id}","starred_url":"https://api.github.com/users/aL3891/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aL3891/subscriptions","organizations_url":"https://api.github.com/users/aL3891/orgs","repos_url":"https://api.github.com/users/aL3891/repos","events_url":"https://api.github.com/users/aL3891/events{/privacy}","received_events_url":"https://api.github.com/users/aL3891/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-12-07T21:31:15Z","updated_at":"2016-12-08T10:33:38Z","closed_at":null,"body":"Today a property or item is marked as such by being placed in a `<PropertyGroup>` or `<ItemGroup>` element. But what if there was a way to specify in advance what type of element is?\r\nconsider this:\r\n\r\nBefore:\r\n\r\n```\r\n<Project ToolsVersion=\"15.0\" Sdk=\"Microsoft.NET.Sdk.Web\">\r\n  <PropertyGroup>\r\n    <OutputType>Exe</OutputType>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"**\\*.cs\" />\r\n  </ItemGroup>\r\n</Project>\r\n```\r\n\r\nAfter:\r\n\r\n```\r\n(Inside a props file)\r\n...\r\n<UsingProperty Name=\"OutputType\" />\r\n<UsingItem Name=\"Compile \" />\r\n...\r\n```\r\n\r\n```\r\n<Project ToolsVersion=\"15.0\" Sdk=\"Microsoft.NET.Sdk.Web\">\r\n  <OutputType>Exe</OutputType>\r\n  <Compile Include=\"**\\*.cs\" />\r\n</Project>\r\n```\r\n\r\nI havent dug super deep into the msbuild code but my understanding is that there is a processing step in there where the project file is expanded and things like default imports are added, perhaps this is something that could be done there as well? I think it really cuts down on the verbosity"},"comment":{"url":"https://api.github.com/repos/Microsoft/msbuild/issues/comments/265707994","html_url":"https://github.com/Microsoft/msbuild/issues/1453#issuecomment-265707994","issue_url":"https://api.github.com/repos/Microsoft/msbuild/issues/1453","id":265707994,"user":{"login":"aL3891","id":2126346,"avatar_url":"https://avatars.githubusercontent.com/u/2126346?v=3","gravatar_id":"","url":"https://api.github.com/users/aL3891","html_url":"https://github.com/aL3891","followers_url":"https://api.github.com/users/aL3891/followers","following_url":"https://api.github.com/users/aL3891/following{/other_user}","gists_url":"https://api.github.com/users/aL3891/gists{/gist_id}","starred_url":"https://api.github.com/users/aL3891/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aL3891/subscriptions","organizations_url":"https://api.github.com/users/aL3891/orgs","repos_url":"https://api.github.com/users/aL3891/repos","events_url":"https://api.github.com/users/aL3891/events{/privacy}","received_events_url":"https://api.github.com/users/aL3891/received_events","type":"User","site_admin":false},"created_at":"2016-12-08T10:33:38Z","updated_at":"2016-12-08T10:33:38Z","body":"Another point for this approach is toolability as well, if the types for certin properties/items are know, tools can provide intellisense for them."}}
{"actor":{"display_login":"aL3891"}}