Commit graph

42 commits

Author SHA1 Message Date
Justin Goshi
3884c90938 Merge from rel/1.0.0 2017-01-23 10:25:16 -08:00
Dustin Campbell
0a62481cc0 Create backup folder in the directory where 'dotnet migrate' is executed (#5306)
* Create backup folder in the directory where 'dotnet migrate' is executed

With this change, 'dotnet migrate' will create the backup folder in the workspace directory rather
than the parent of the workspace directory. This solves two problems:

1. It makes it easier for the user where the backup is -- it's in the directory they targeted with
'dotnet migrate'.
2. It solves a problem of file oollisions with global.json files when migrating multiple projects.
Consider the following directory structure:

    root
        |
        project1
            |
            global.json
            |
            src
                |
                project1
        project2
            |
            global.json
            |
            src
                |
                project2

    Prior to this change, running 'dotnet migrate' project1 and then running it again in project2
    would have caused an exception to be thrown because the migration would try to produce a backup
    folder like so:

    root
        |
        backup
        |  |
        |   global.json
        |   |
        |   project1
        |   |
        |   project2
        |
        |
        project1
            |
            src
                |
                project1
        project2
            |
            src
                |
                project2

    Now, we produce the following structure, which has no collisions:

    root
        |
        project1
            |
            backup
            |   |
            |   global.json
            |   |
            |   project1
            |
            src
                |
                project1
        |
        project2
            |
            backup
            |   |
            |   global.json
            |   |
            |   project2
            |
            src
                |
                project2

In addition, to help avoid further collisions, a number is appened to the backup folder's name if
it already exists. So, if the user runs dotnet migrate again for some reason, they'll see backup_1,
backup_2, etc.

* Fix test helper

* Fix foolish bug causing infinite loop

* Fix up a couple more tests

* Rework MigrationBackupPlan to process all projects at once

* Fix up tests

* Still fixing tests

* Compute common root folder of projects to determine where backup folder should be placed

* Fix typo

* Fix test to not look in backup folder now that it's in a better location
2017-01-21 01:58:28 -08:00
Justin Goshi
baecbd8d43 WIP 2017-01-20 17:37:11 -08:00
Piotr Puszkiewicz
fe290f1e26 Merge branch 'rel/1.0.0' into dev/jgoshi/issue5343 2017-01-20 14:08:49 -08:00
Piotr Puszkiewicz
26aa05cfea Merge pull request #5394 from livarcocc/migrate_global_json
Handle dotnet migrate global.json
2017-01-20 14:07:27 -08:00
Justin Goshi
33c962a481 Merge branch 'rel/1.0.0' into dev/jgoshi/issue5343 2017-01-20 12:21:43 -08:00
Justin Goshi
717d0a45fa Moving existing csproj files with same name as migration output to backup 2017-01-20 12:21:04 -08:00
Justin Goshi
56c3010f72 Merge branch 'rel/1.0.0' into dev/jgoshi/issue5343 2017-01-19 13:17:05 -08:00
Livar Cunha
13e9e697c9 Adding an extra message to the migrate result to direct people to a place where they can get help for their migrated projects. 2017-01-19 12:41:48 -08:00
Livar
c4e2c35d25 Merge branch 'rel/1.0.0' into migrate_global_json 2017-01-19 12:25:35 -08:00
Justin Goshi
5bbac55736 Migration: do not add a csproj to the solution if it already exists 2017-01-19 11:23:01 -08:00
Livar Cunha
cdf91f2f30 Fixing dotnet migrate global.json. This was failing because we were turning global.json into an empty string and trying to construct a directory for it. The fix was to detect this and transform it into a . directory. Migrate is already respecting the projects node in global.json. 2017-01-19 10:55:23 -08:00
Krzysztof Wicher
1a20d7f82c Merge remote-tracking branch 'github/rel/1.0.0-rc3' into rel/1.0.0 2017-01-18 12:38:11 -08:00
Justin Goshi
a5fb786228 Ensure we don't downgrade VS version 2017-01-17 14:48:54 -08:00
Justin Goshi
2676682fec Migrate should change the visual studio version 2017-01-17 13:45:48 -08:00
Krzysztof Wicher
5fea7c3ae6 Remove try catches choking all exceptions (#5206)
* remove some try catches choking all exceptions

* rename ExceptionExtension to ReportAsWarning, show full stack instead of just message

* dotnet-migrate try catch clean-up

* fix migration test failures
2017-01-12 15:42:36 -08:00
Justin Goshi
e109a9be47 dotnet sln command (#5233)
* Add dotnet sln command

* Use new names for localizable strings

* Fix up the tests for the verb rename
2017-01-06 10:58:23 -10:00
Jon Sequeira
35e3625d4b Merge branch 'rel/1.0.0' into make-migration-backup-folder-peer-of-project 2016-12-20 15:24:33 -08:00
Justin Goshi
89f0b05958 Improve sln migration tests (#5066)
* WIP Improve sln migration tests

* Simple migration test

* Improve the test

* WIP update test assets

* Update test

* Test a bug fix

* Add another migrate sln test

* Fix FilePath related tests

* Finish the migrate sln tests

* Fix tests

* Fix another path issue
2016-12-20 13:04:01 -10:00
jonsequitur
620e573f95 make migration backup folder a sibling of the project root 2016-12-20 14:35:52 -08:00
Justin Goshi
441277ccfa Implement dotnet add project (#5022)
* Implement dotnet add project

* Addressed PR comments
2016-12-14 13:53:11 -10:00
Justin Goshi
2b7e9b6524 Clean up sln reader/writer (#5005) 2016-12-13 06:45:00 -10:00
Justin Goshi
0831316321 Allow migration of sln files (#4949)
* WIP Migrate sln files

* WIP add reference to redist

* Adding tests and fixing a few bugs

* Fix some tests

* Remove use of DeepClone

* Fix test build errors

* Fix more tests
2016-12-07 11:49:15 -10:00
Piotr Puszkiewicz
d6cab4af58 use Sdks attribute in dotnet new templates (#4916)
* Move dotnet-new templates to Sdk attribute

* Update to MSBuild 15.1.0-preview-000454-01

To pick up a fix for Microsoft/msbuild#1431.

* Fix template newlines

* Fix casing on Microsoft.Net.Sdk

* Move migration test csproj's to Sdk attribute

* Disable parallel sdk restore

Each SDK restore operation will try to manipulate the same assets.json file since the dependency name&version are injected into a common csproj file. This can cause runtime failures when two NuGets try to restore the project at once.

* Make casing of SDK 'NET' and not 'Net'

* Remove redundatn imports

* Fix test string

* Additional race

* Replacing the SDK with the Web.Sdk when it is a Web project.

* Fixing the test by writting the csproj before running the migration rule.
2016-12-04 22:31:58 -08:00
Jeff Kluge
2205a8577c Move project.lock.json during migration
Closes #4753
2016-11-23 09:46:36 -08:00
Piotr Puszkiewicz
d39ee4a463 add *.xproj.user to backup file types 2016-11-16 01:10:55 -08:00
Piotr Puszkiewicz
5ede3b6367 post migration cleanup (#4449)
* Create tests

* Basic scenario working & tested

* Feature Complete

* prevent build of intentionally broken test asset

* Update migrate command backup

* PR Feedback

* Move negative test to negative test directory

* Fix tests

* make test output directories unique

* Merge Conflict

* make backup the default behavior

* Pass2Fail

* Remove tests' PJ dependency
2016-10-29 01:58:37 -07:00
Livar Cunha
59ac685dcd Updating the msbuild version to one with the preserve compilation context fix. 2016-10-28 18:19:41 -07:00
Livar Cunha
9e49ec2723 Replacing DeepClone with a call that creates a copy of the project using the template csproj under a new ProjectCollection everytime. 2016-10-28 18:19:40 -07:00
Bryan Thornbury
c9f9421b93 preserve whitespace 2016-10-28 18:19:39 -07:00
Piotr Puszkiewicz
6fcbefa4f7 [WIP] Removes *3 verbs, making msbuild the driver (#4456)
Removes *3 verbs, making msbuild the driver
2016-10-27 18:46:43 -07:00
Justin Goshi
48ae5d17ac Improve error messages for the migrate command
https://github.com/dotnet/cli/issues/4313
2016-10-10 15:38:25 -07:00
Bryan Thornbury
fbaf9a679e Project Migration Report 2016-10-06 15:56:15 -07:00
Sridhar Periyasamy
c6064677db Address PR feedback 2016-10-05 17:58:42 -07:00
Sridhar Periyasamy
1d85c241b1 Add support to migrate folders specified in global.json 2016-10-05 16:27:17 -07:00
Livar Cunha
c04f7a0cd0 Changing the migrate command to obtain the sdk package version from the PackageRef in csproj instead of project.json. 2016-09-30 09:27:15 -07:00
Sridhar Periyasamy
a50708ac5c Address PR feedback 2016-09-28 09:00:15 -07:00
Sridhar Periyasamy
7ee2bd1f26 Add support to migrate a directory.
- Given a directory migrate all the project.jsons in it recursively.
- Remove '-p/--project' option. Instead directly pass a directory or project.json as argument.
- Add tests.
2016-09-26 14:16:17 -07:00
Sridhar Periyasamy
46ab621422 Migrate P2P references
- Given a project migrate all the project references recursively.
- Add a boolean option '--skip-project-references' to skip migrating P2P references. By default P2P references are migrated.
- Remove the '--output' since it is not used heavily and makes migrating multiple projects easier.
- Add tests
2016-09-23 14:25:57 -07:00
Bryan Thornbury
5d2f0579d2 Migrate xproj to csproj dependencies 2016-09-21 17:27:02 -07:00
Bryan Thornbury
b0554d3ff3 PR Feedback 2016-08-30 12:00:56 -07:00
Bryan Thornbury
611e4ccfde dotnet-migrate built in command for cli 2016-08-30 11:56:53 -07:00