* Add sqlproj property to trace the origin of the project.
As part of the database migration process (schema conversion, in particular) we want to be able to tell when converted schemas are being built/deployed to the actual database server. Given that we rely on the SQL Database Projects ADS extension for the compilation/deployment, we don't have too many options other than updating the said extension.
The suggested approach is to make the following changes:
1) Add new property to the sqlproj file (called `DatabaseSource`), which will maintain the origin(s) of the project. The property can contain multiple values (separated by semicolon), in case same project contains objects produced by multiple sources (extract schema, convert from another database, etc.).
2) During build and deploy actions, send the well-known values from the newly added property to the telemetry. We don't want to send any random value of the property, as it may raise some privacy concerns. Instead we define a list of the well-known values that we know do not carry any personal information and send those, if they are specified.
This change adds all necessary APIs to the SQl Database projects extension which will be consumed by our migration extensions to populate new `DatabaseSource` property.
* Use `undefined` instead of `null`
Co-authored-by: Kim Santiago <kisantia@microsoft.com>
* add sdk style project template
* update description and order
* add SDK style project option to create project from db dialog
* fix test
* switch to checkbox
* remove not used string
* fix test
* add support for removing file in new style project
* fix test
* only load files, not whole project when checking if a <Build Remove> needs to be added
* merge changes
* fixes after merge
* use glob to get files for new style msbuild sdk sqlproj
* add tests
* cleanup
* fix test
* don't show bin and obj files and folders
* handle other glob patterns
* fix duplicate entries getting added for glob patterns in project's folder
* don't show SSDT update warning for new style projects
* update strings
* add checks for the 2 other ways to specify msbuild sdk
* add link to docs on how to use project sdk
Co-authored-by: Kim Santiago <kisantia@Kims-MacBook-Pro.local>
* Automatically add intermediate folders for SQL project items.
While using the SQL database projects through the API, I noticed that project may end up in somewhat inconsistent state, where files will be added to the project, but their parent folders will not. This in turn resulted in failure to remove these folders from project - they will show up in the UI tree, but deleting them will cause an error. In order to align with how Visual Studio manages the projects, this change will ensure that all intermediate folders are present in the project, when new files or folders are added.
While this change improves project "correctness" when accessing it through SQL projects extension APIs, there is still a possibility that someone will open an "incorrect" previously created project. This change does not address it and folder removal may still fail.
* Update the code to never throw on duplicate items when adding files and folders to project.
After a conversation with the sqlproj owners, we agreed that there are no scenarios that would prompt us to throw an error, if duplicate item is being added to the project. Ultimately, the goal of such a request would be to have an item in the project file, which is already present, therefore the call becomes a no-op.
This allowed me to simplify the new code that was ensuring all intermediate folders are present in the project when adding files and folders.