{"action":"created","issue":{"url":"https://api.github.com/repos/google/google-api-dotnet-client/issues/696","repository_url":"https://api.github.com/repos/google/google-api-dotnet-client","labels_url":"https://api.github.com/repos/google/google-api-dotnet-client/issues/696/labels{/name}","comments_url":"https://api.github.com/repos/google/google-api-dotnet-client/issues/696/comments","events_url":"https://api.github.com/repos/google/google-api-dotnet-client/issues/696/events","html_url":"https://github.com/google/google-api-dotnet-client/pull/696","id":140439668,"number":696,"title":"Remove support for .NET 4.0","user":{"login":"mmdriley","id":1052311,"avatar_url":"https://avatars.githubusercontent.com/u/1052311?v=3","gravatar_id":"","url":"https://api.github.com/users/mmdriley","html_url":"https://github.com/mmdriley","followers_url":"https://api.github.com/users/mmdriley/followers","following_url":"https://api.github.com/users/mmdriley/following{/other_user}","gists_url":"https://api.github.com/users/mmdriley/gists{/gist_id}","starred_url":"https://api.github.com/users/mmdriley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mmdriley/subscriptions","organizations_url":"https://api.github.com/users/mmdriley/orgs","repos_url":"https://api.github.com/users/mmdriley/repos","events_url":"https://api.github.com/users/mmdriley/events{/privacy}","received_events_url":"https://api.github.com/users/mmdriley/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/google/google-api-dotnet-client/labels/cla:%20yes","name":"cla: yes","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2016-03-13T02:36:27Z","updated_at":"2016-03-16T06:50:38Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/google/google-api-dotnet-client/pulls/696","html_url":"https://github.com/google/google-api-dotnet-client/pull/696","diff_url":"https://github.com/google/google-api-dotnet-client/pull/696.diff","patch_url":"https://github.com/google/google-api-dotnet-client/pull/696.patch"},"body":"Microsoft ended support for .NET 4.0 in January 2016:\r\nhttps://blogs.msdn.microsoft.com/dotnet/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1/\r\n\r\nRemoving support in our libraries and bringing anything framework-\r\nsensitive up to 4.5 will allow us to drop a lot of vestigial\r\ndependencies that have caused problems for, e.g., customers using\r\nus from DLLs. It also lays the groundwork for supporting .NET Core,\r\nsince net40 and dnxcore share no PCL profiles in common.\r\n\r\nEven assuming customers aren't *running* on .NET 4.0, their projects may\r\nstill *target* it by specifying a target framework. Those customers will\r\nnot be able to use new versions of our NuGet packages without retargeting\r\ntheir apps. Old versions of the libraries will continue to work.\r\n\r\nIn terms of implementation, the steps here were:\r\n\r\n* Rename _Net40 projects to _Net45\r\n\r\n* Retarget any project that previously targeted 4.0 to 4.5.\r\n\r\n* Reinstall NuGet packages to rewrite targetFramework in packages.config\r\n  and to update references in the project to net45 versions.\r\n\r\n  The useful command here was: `Update-Package -ProjectName <project> -Reinstall`\r\n\r\n* Remove dependencies on Nuget packages like Microsoft.Net.Http\r\n  that are no longer necessary.\r\n\r\n* Fix a few uses of TaskEx from the now-removed BCL NuGet packages.\r\n\r\n* Remove now-unnecessary binding redirects from app.config.\r\n\r\n* Change Net45 projects to refer only to other Net45 projects, rather\r\n  than PCLs. This should make it easier for customers to use our\r\n  libraries from DLLs, since app.config won't be necessary to rewrite\r\n  dependencies that differ between Net45 and PCL.\r\n\r\n* Retarget the PCL projects from net40 to net45:\r\n\r\n  `Profile328` = `portable-net4+sl50+netcore45+wpa81+wp8`\r\n\r\n  `Profile344` = `portable-net45+sl50+netcore45+wpa81+wp8`\r\n\r\n  If we don't do this, the package will still support net40 but won't\r\n  include the PlatformServices assemblies for net40. Customers would\r\n  be upgraded to new libraries that might break their apps.\r\n\r\n* Update the .nuspec files to reflect new targets."},"comment":{"url":"https://api.github.com/repos/google/google-api-dotnet-client/issues/comments/197183531","html_url":"https://github.com/google/google-api-dotnet-client/pull/696#issuecomment-197183531","issue_url":"https://api.github.com/repos/google/google-api-dotnet-client/issues/696","id":197183531,"user":{"login":"jskeet","id":17011,"avatar_url":"https://avatars.githubusercontent.com/u/17011?v=3","gravatar_id":"","url":"https://api.github.com/users/jskeet","html_url":"https://github.com/jskeet","followers_url":"https://api.github.com/users/jskeet/followers","following_url":"https://api.github.com/users/jskeet/following{/other_user}","gists_url":"https://api.github.com/users/jskeet/gists{/gist_id}","starred_url":"https://api.github.com/users/jskeet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jskeet/subscriptions","organizations_url":"https://api.github.com/users/jskeet/orgs","repos_url":"https://api.github.com/users/jskeet/repos","events_url":"https://api.github.com/users/jskeet/events{/privacy}","received_events_url":"https://api.github.com/users/jskeet/received_events","type":"User","site_admin":false},"created_at":"2016-03-16T06:50:38Z","updated_at":"2016-03-16T06:50:38Z","body":"I agree with Matt. While it *feels* wrong to make this change on the 1.x line, I can't fault Matt's logic. I would note that we're basically assuming people will use NuGet to get updates - it *is* a breaking change in terms of anyone who just copies a DLL around manually. However, they'd be copying the DLL out of a directory which is clearly not meant to support .NET 4.0, so I don't think it's unreasonable for that to break - and I suspect the number of people actually doing that is 0 anyway."}}