{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/cli/issues/4513","repository_url":"https://api.github.com/repos/dotnet/cli","labels_url":"https://api.github.com/repos/dotnet/cli/issues/4513/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/cli/issues/4513/comments","events_url":"https://api.github.com/repos/dotnet/cli/issues/4513/events","html_url":"https://github.com/dotnet/cli/issues/4513","id":185773502,"number":4513,"title":"Add a `dotnet sln` command","user":{"login":"blackdwarf","id":3115004,"avatar_url":"https://avatars.githubusercontent.com/u/3115004?v=3","gravatar_id":"","url":"https://api.github.com/users/blackdwarf","html_url":"https://github.com/blackdwarf","followers_url":"https://api.github.com/users/blackdwarf/followers","following_url":"https://api.github.com/users/blackdwarf/following{/other_user}","gists_url":"https://api.github.com/users/blackdwarf/gists{/gist_id}","starred_url":"https://api.github.com/users/blackdwarf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blackdwarf/subscriptions","organizations_url":"https://api.github.com/users/blackdwarf/orgs","repos_url":"https://api.github.com/users/blackdwarf/repos","events_url":"https://api.github.com/users/blackdwarf/events{/privacy}","received_events_url":"https://api.github.com/users/blackdwarf/received_events","type":"User","site_admin":false},"labels":[{"id":268110644,"url":"https://api.github.com/repos/dotnet/cli/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":{"login":"krwq","id":660048,"avatar_url":"https://avatars.githubusercontent.com/u/660048?v=3","gravatar_id":"","url":"https://api.github.com/users/krwq","html_url":"https://github.com/krwq","followers_url":"https://api.github.com/users/krwq/followers","following_url":"https://api.github.com/users/krwq/following{/other_user}","gists_url":"https://api.github.com/users/krwq/gists{/gist_id}","starred_url":"https://api.github.com/users/krwq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krwq/subscriptions","organizations_url":"https://api.github.com/users/krwq/orgs","repos_url":"https://api.github.com/users/krwq/repos","events_url":"https://api.github.com/users/krwq/events{/privacy}","received_events_url":"https://api.github.com/users/krwq/received_events","type":"User","site_admin":false},"assignees":[{"login":"krwq","id":660048,"avatar_url":"https://avatars.githubusercontent.com/u/660048?v=3","gravatar_id":"","url":"https://api.github.com/users/krwq","html_url":"https://github.com/krwq","followers_url":"https://api.github.com/users/krwq/followers","following_url":"https://api.github.com/users/krwq/following{/other_user}","gists_url":"https://api.github.com/users/krwq/gists{/gist_id}","starred_url":"https://api.github.com/users/krwq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krwq/subscriptions","organizations_url":"https://api.github.com/users/krwq/orgs","repos_url":"https://api.github.com/users/krwq/repos","events_url":"https://api.github.com/users/krwq/events{/privacy}","received_events_url":"https://api.github.com/users/krwq/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/dotnet/cli/milestones/13","html_url":"https://github.com/dotnet/cli/milestones/1.0.0-preview4","labels_url":"https://api.github.com/repos/dotnet/cli/milestones/13/labels","id":2098355,"number":13,"title":"1.0.0-preview4","description":"","creator":{"login":"blackdwarf","id":3115004,"avatar_url":"https://avatars.githubusercontent.com/u/3115004?v=3","gravatar_id":"","url":"https://api.github.com/users/blackdwarf","html_url":"https://github.com/blackdwarf","followers_url":"https://api.github.com/users/blackdwarf/followers","following_url":"https://api.github.com/users/blackdwarf/following{/other_user}","gists_url":"https://api.github.com/users/blackdwarf/gists{/gist_id}","starred_url":"https://api.github.com/users/blackdwarf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blackdwarf/subscriptions","organizations_url":"https://api.github.com/users/blackdwarf/orgs","repos_url":"https://api.github.com/users/blackdwarf/repos","events_url":"https://api.github.com/users/blackdwarf/events{/privacy}","received_events_url":"https://api.github.com/users/blackdwarf/received_events","type":"User","site_admin":false},"open_issues":80,"closed_issues":26,"state":"open","created_at":"2016-10-27T19:48:58Z","updated_at":"2016-11-23T08:04:11Z","due_on":null,"closed_at":null},"comments":10,"created_at":"2016-10-27T20:35:57Z","updated_at":"2016-11-23T09:23:20Z","closed_at":null,"body":"The CLI needs to provide a way for users to manipulate the solution file (SLN file). \n\nBelow is a mini-spec of the command.\n### Top level Verb\n\nsln\n### Alias\n\nsln\n### Sub verbs\n\nadd | del | list | create\n### Switches\n-   --file | -f\n  -   Path to the solution file. If not present, the command will assume one is present in the current directory. If `create` subverb is used and this parameter is not specified, an error is thrown. \n### Arguments\n-   &lt;project&gt;\n  -   Path to the project file to include in the SLN file. Has to be a relative path\n### Defaults\n-   If the &lt;project&gt; is not present, we will try to see if there is a project in the current directory; if there is, it will be added, if not, an error is displayed\n  -   If the &lt;project&gt; is a path, we try to see if there is a single csproj in the directory; if yes, we add that one, if not, we fail with an appropriate error; the same is for multiple\n-   If the -f is not present, we will do a similar thing that the CLI does today when resolving the global.json file looking for the SDK version property. We traverse the hierarchy upwards to find the SLN file.\n### Notes\n\nIf the `create` command was specified, the `sln` command will recursively search for all of the projects in the tree below the invocation point and add them to the solution.\n### Examples\n-   `dotnet sln add \"../path/to/project\"`\n  -   Add a project found at the specified path to the solution file; if the path is a directory, search for a csproj in there and add;\n-   `dotnet sln remove --file \"path/to/solution.sln\" \"../path/to/project.csproj\"`\n  -   Remove a project found at the specified path to the solution file\n-   `dotnet sln list`\n  -   List out all of the projects and configurations from the solution;1\n- `dotnet sln create -f MySolution.sln`\n  - Creates a new solution file with all of the projects that exist in the directories underneath the invocation one. \n"},"comment":{"url":"https://api.github.com/repos/dotnet/cli/issues/comments/262465733","html_url":"https://github.com/dotnet/cli/issues/4513#issuecomment-262465733","issue_url":"https://api.github.com/repos/dotnet/cli/issues/4513","id":262465733,"user":{"login":"sayedihashimi","id":1283154,"avatar_url":"https://avatars.githubusercontent.com/u/1283154?v=3","gravatar_id":"","url":"https://api.github.com/users/sayedihashimi","html_url":"https://github.com/sayedihashimi","followers_url":"https://api.github.com/users/sayedihashimi/followers","following_url":"https://api.github.com/users/sayedihashimi/following{/other_user}","gists_url":"https://api.github.com/users/sayedihashimi/gists{/gist_id}","starred_url":"https://api.github.com/users/sayedihashimi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sayedihashimi/subscriptions","organizations_url":"https://api.github.com/users/sayedihashimi/orgs","repos_url":"https://api.github.com/users/sayedihashimi/repos","events_url":"https://api.github.com/users/sayedihashimi/events{/privacy}","received_events_url":"https://api.github.com/users/sayedihashimi/received_events","type":"User","site_admin":false},"created_at":"2016-11-23T09:23:20Z","updated_at":"2016-11-23T09:23:20Z","body":"@piotrpMSFT he's asking about \"Website project\", it doesn't have anything to do with Azure and is not windows specific. \r\n\r\nI do agree with @TheSamsterZA that we should be able to do the same things across tools, but for website project I'm really not sure in this case. Since website project doesn't have a project file the properties are stored in the .sln file. For example here is a snippet from a .sln that contains a reference to a standard .csproj and a website project.\r\n\r\n```\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"WebApplication7\", \"WebApplication7\\WebApplication7.csproj\", \"{ECE2722A-3E9A-4DEF-990D-B6AB8EA45DB1}\"\r\nEndProject\r\n\r\nProject(\"{E24C65DC-7377-472B-9ABA-BC803B73C61A}\") = \"WebSite1(1)\", \"..\\..\\WebSites\\WebSite1\\\", \"{6F02EDA7-411B-4577-BF09-D19BA8021566}\"\r\n\tProjectSection(WebsiteProperties) = preProject\r\n\t\tTargetFrameworkMoniker = \".NETFramework,Version%3Dv4.5.2\"\r\n\t\tDebug.AspNetCompiler.VirtualPath = \"/localhost_7532\"\r\n\t\tDebug.AspNetCompiler.PhysicalPath = \"..\\..\\WebSites\\WebSite1\\\"\r\n\t\tDebug.AspNetCompiler.TargetPath = \"PrecompiledWeb\\localhost_7532\\\"\r\n\t\tDebug.AspNetCompiler.Updateable = \"true\"\r\n\t\tDebug.AspNetCompiler.ForceOverwrite = \"true\"\r\n\t\tDebug.AspNetCompiler.FixedNames = \"false\"\r\n\t\tDebug.AspNetCompiler.Debug = \"True\"\r\n\t\tRelease.AspNetCompiler.VirtualPath = \"/localhost_7532\"\r\n\t\tRelease.AspNetCompiler.PhysicalPath = \"..\\..\\WebSites\\WebSite1\\\"\r\n\t\tRelease.AspNetCompiler.TargetPath = \"PrecompiledWeb\\localhost_7532\\\"\r\n\t\tRelease.AspNetCompiler.Updateable = \"true\"\r\n\t\tRelease.AspNetCompiler.ForceOverwrite = \"true\"\r\n\t\tRelease.AspNetCompiler.FixedNames = \"false\"\r\n\t\tRelease.AspNetCompiler.Debug = \"False\"\r\n\t\tVWDPort = \"7532\"\r\n\t\tSlnRelativePath = \"..\\..\\WebSites\\WebSite1\\\"\r\n\t\tDefaultWebSiteLanguage = \"Visual C#\"\r\n\tEndProjectSection\r\nEndProject\r\n```\r\n\r\nAs you can see you cannot just \"add a website project\" to a .sln, it must be defined. VS also hooks up IIS Express, sets the target fx, etc. \r\n\r\nFor `dotnet sln` I think it makes sense to be able to ***remove a website project from a solution***. \r\nFor `dotnet run` I think it make sense to be able to ***run a website project***\r\n\r\nAlso in addition to this, I've been discussing with @BillHiebert how we can replace the website project with a new project type that is based on ASP.NET Core project type. The idea is that we could have a \"Static Web Project\" type where you have a pointer to a folder and we handle launching IIS Express and other goodness. If we are able to do that I'd like to see if we can migrate website project users to that new model."}}
{"actor":{"display_login":"sayedihashimi"}}