Microsoft Visual Studio: Difference between revisions
Brian Wilson (talk | contribs) |
Brian Wilson (talk | contribs) mNo edit summary |
||
(24 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
''Well, this is outdated. I used [[Visual Studio Code]] now.'' | |||
I am using the 2017 Community edition. | I am using the 2017 Community edition. | ||
2018-04-15 Updated to 15.6.4 (on [[Murre]]) and .Net Framework 4.7.1 | * 2019-03-15 15.9.9 at work. | ||
* 2018-08-09 15.7.6 and Node.JS workload installed on [[Murre]]. | |||
* 2018-07-07 Now have 15.7.4 on [[Plover]]. | |||
* 2018-04-15 Updated to 15.6.4 (on [[Murre]]) and .Net Framework 4.7.1 | |||
'''INSTALL ArcGIS Desktop and Pro first.''' Then VS will be able to find and use the ESRI versions of Python. | |||
My "installation details": | |||
* Visual Studio core editor | |||
* Python development (uncheck Python 3) | |||
* Node.js development | |||
== Overview == | |||
I | Originally I wanted to try to develop some ArcObjects tools | ||
and I want to access those tools from Python. | and I want to access those tools from Python. | ||
I have ESRI versions of Python. I originally installed the Anaconda versions | |||
to use Spyder. At the moment I am just using the Pythons that comes with ESRI. | |||
Going forward ESRI has blessed Anaconda by including it in [[ArcGIS Pro]]. Microsoft is supporting it now too. | |||
I used to be a Windows developer so I was in Visual Studio sessions all day, every day. | I used to be a Windows developer so I was in Visual Studio sessions all day, every day. | ||
So far it's working nearly as well with Python as it did with C#. Integration with ESRI/ArcPy has been seamless. | So far it's working nearly as well with Python as it did with C#. Integration with ESRI/ArcPy has been seamless. | ||
== Installation == | === Digression: VS on a Mac === | ||
There is a full development environment based on the Mac OS, it is true; but there is '''no Python support'''. | |||
Not yet anyway. So it's useless for me there. | |||
== Installation notes == | |||
For downloads and official help go to https://www.visualstudio.com/ | |||
Make sure you get the Community Edition, unless you have reasons to want to pay Microsoft. | |||
=== Workloads === | |||
When you install VS, you don't get tons of different languages installed, you have to pick what you want. The packages are called "workloads", see https://visualstudio.microsoft.com/vs/visual-studio-workloads/. | |||
For reasons I mention on the [[Anaconda]] page, '''do NOT install the versions of Python and Anaconda''' that are available in the Visual Studio installer. Install them separately. Install only the "Python development" workload and turn off Python 3x64; | |||
Visual Studio won't have any problem finding and using external ESRI and Anaconda packages that you install separately. | |||
As mentioned in my [[Anaconda]] page), '''if you install the Microsoft Anaconda workload, you will have to | |||
run to your administrator every time you need a new Python package.''' | |||
==== Javascript ==== | |||
For Javascript I installed the Node.JS workload. I had to install Node.JS separately from https://nodejs.org | |||
See my [[Javascript]] page for more. | |||
VS works quite well for Javascript but I am currently using [[Atom]] for most web dev tasks. | |||
== Set up == | === Set up === | ||
=== Select the Python you want === | ==== Select the Python you want ==== | ||
# Tools->Python->Python Environment | # Tools->Python->Python Environment | ||
# Select the one for ESRI Python 2.7.14 64-bit for modern ArcMap work or 32-bit if you need Personal Geodatabases | # Select the one for ESRI Python 2.7.14 64-bit for modern ArcMap work or 32-bit if you need to use old Personal Geodatabases. | ||
# Choose "Make this the default for new projects" | # Choose "Make this the default for new projects" | ||
=== Tabs at 4, really? === | You can change the python that a project uses anytime later. | ||
==== Edit PYT files ==== | |||
By default VS only recognizes .py files as being python source, so the ESRI Python Toolbox files (.pyt) are not recognized. | |||
Change this in Visual Studio by going to Tools->Options->Text Editor and under File Extension enter pyt and select Python Editor and click "Add". | |||
You still can't directly execute PYT files in the VS debugger, | |||
but at least you can edit them and it will recognize them as python code. | |||
==== Tabs at 4, really? ==== | |||
Microsoft is still clinging to settings tabs in the text editor at 4. | Microsoft is still clinging to settings tabs in the text editor at 4. | ||
It should be tabs at 8 and ''' | It should be tabs at 8 and '''insert spaces''' not "Keep tabs". Set it thus and avoid a world of pain*. | ||
"Insert spaces" means it will use spaces instead of mixing tabs and spaces. | |||
Tools -> Options -> Python -> Tabs | Tools -> Options -> Python -> Tabs | ||
Line 47: | Line 89: | ||
Since Python cares (a lot) about indentation, having the indents ''look'' consistent is not enough, | Since Python cares (a lot) about indentation, having the indents ''look'' consistent is not enough, | ||
eventually you will end up with a mixture of spaces and tabs in your .py file, and one line will have for example | eventually you will end up with a mixture of spaces and tabs in your .py file, and one line will have for example | ||
two tabs and it lines up with all the others which have 8 spaces. Then it will no longer compile, | two tabs (2 X "tabs at 4" = 8) and it lines up with all the others which have 8 spaces. Then it will no longer compile, | ||
giving you the error about indentation being wrong even though everything ''looks'' just fine. | giving you the error about indentation being wrong even though everything ''looks'' just fine. (There will be a yellow line in the editor that you will ignore because everything looks okay.) | ||
So the answer is to set it to "insert spaces", never put tabs anywhere, it's 2018 and saving a few hundred bytes by substituting tabs for spaces is no longer important. | |||
=== Use Git for version control === | ==== Use Git for version control ==== | ||
Go to "Tools -> Options -> Source Control" and under "Plug-in Selection", switch to Git. | Go to "Tools -> Options -> Source Control" and under "Plug-in Selection", switch to Git. | ||
I set it this way, '''but so far I still use git from the command line'''. | |||
I tried out the Github extension and it works but I don't really see it as an advantage over using the commands. | |||
I use the git bash shell on Windows 7. I suppose if you never use bash it might be more difficult | I tried out the Github extension for VS and it works but I don't really see it as an advantage over using the commands. | ||
I use the git bash shell all day on Windows 7. I suppose if you never use bash it might be more difficult. | |||
In Windows 10 there is the WSL "Windows Subsystem for Linux", comes from Microsoft, and gets you a variation on | |||
the same things: a bash command shell and git commands. | |||
=== | ==== Enable the experimental support for Intellisense ==== | ||
This is a checkbox under Tools->Options->Python->Experimental | This is a checkbox under Tools->Options->Python->Experimental | ||
=== | Intellisense is one of the main reasons to use Visual Studio. That's the code completion feature, | ||
where for example you type "arcpy.ListDataSets(" and VS pops up what arguments ListDatasets needs. | |||
== Templates == | |||
(Reminder to self: Visual Studio likes to keep your projects in %HOME%/source/repos) | |||
I got tired of having to manually add "import arcpy" etc each time I created a new py file so I made an ArcPy template. | |||
Then I made one for Python tools, too. They are timesavers. I posted them on github as [https://github.com/brian32768/visual_studio_templates brian32768/visual_studio_templates] | |||
I am building [[Javascript]] [[OpenLayers]] templates now, they will be in the same repository. | |||
A template is comprised of a set of files in a zip. The code, a .vstemplate file, and an icon. | |||
Deployment is just dropping the zip file into your template folder, which for me is set to in J:\VisualStudio2017\Templates\ | |||
The repository will have more details, but refer to this page too. | |||
https://docs.microsoft.com/en-us/visualstudio/ide/creating-project-and-item-templates | |||
== Developing extensions in C# == | |||
I built some ESRI code samples to prove to myself it works but have not really gone further yet. | |||
If you want to try to compile C# ArcObjects code, you will need the "workload" for C# and .Net. | |||
You will need to install the ArcObjects SDK from ESRI. | |||
https://desktop.arcgis.com/en/system-requirements/latest/arcobjects-sdk-system-requirements.htm | https://desktop.arcgis.com/en/system-requirements/latest/arcobjects-sdk-system-requirements.htm | ||
Line 73: | Line 139: | ||
Microsoft .NET Framework 4.5 or higher; I am using 4.7.1 | Microsoft .NET Framework 4.5 or higher; I am using 4.7.1 | ||
Note you can download .Net Frameworks from inside Visual Studio. | Note you can download additional .Net Frameworks from inside Visual Studio. | ||
Code samples will be found in C:\Program Files (x86)\ArcGIS\DeveloperKit10.6 | |||
=== ArcGIS === | |||
I have not done much with Add-ins but I did start this page: [[ArcGIS Add-ins]] | |||
I have a section on setting up [[Anaconda#ArcGIS Pro + Visual Studio]] | |||
== More help == | |||
Tutorial from Microsoft: https://docs.microsoft.com/en-us/visualstudio/python/tutorial-working-with-python-in-visual-studio-step-01-create-project | |||
[[Category: DevOps]] | [[Category: DevOps]] |
Latest revision as of 00:05, 16 August 2024
Well, this is outdated. I used Visual Studio Code now.
I am using the 2017 Community edition.
- 2019-03-15 15.9.9 at work.
- 2018-08-09 15.7.6 and Node.JS workload installed on Murre.
- 2018-07-07 Now have 15.7.4 on Plover.
- 2018-04-15 Updated to 15.6.4 (on Murre) and .Net Framework 4.7.1
INSTALL ArcGIS Desktop and Pro first. Then VS will be able to find and use the ESRI versions of Python.
My "installation details":
- Visual Studio core editor
- Python development (uncheck Python 3)
- Node.js development
Overview
Originally I wanted to try to develop some ArcObjects tools and I want to access those tools from Python.
I have ESRI versions of Python. I originally installed the Anaconda versions to use Spyder. At the moment I am just using the Pythons that comes with ESRI.
Going forward ESRI has blessed Anaconda by including it in ArcGIS Pro. Microsoft is supporting it now too.
I used to be a Windows developer so I was in Visual Studio sessions all day, every day. So far it's working nearly as well with Python as it did with C#. Integration with ESRI/ArcPy has been seamless.
Digression: VS on a Mac
There is a full development environment based on the Mac OS, it is true; but there is no Python support. Not yet anyway. So it's useless for me there.
Installation notes
For downloads and official help go to https://www.visualstudio.com/
Make sure you get the Community Edition, unless you have reasons to want to pay Microsoft.
Workloads
When you install VS, you don't get tons of different languages installed, you have to pick what you want. The packages are called "workloads", see https://visualstudio.microsoft.com/vs/visual-studio-workloads/.
For reasons I mention on the Anaconda page, do NOT install the versions of Python and Anaconda that are available in the Visual Studio installer. Install them separately. Install only the "Python development" workload and turn off Python 3x64; Visual Studio won't have any problem finding and using external ESRI and Anaconda packages that you install separately.
As mentioned in my Anaconda page), if you install the Microsoft Anaconda workload, you will have to run to your administrator every time you need a new Python package.
Javascript
For Javascript I installed the Node.JS workload. I had to install Node.JS separately from https://nodejs.org See my Javascript page for more.
VS works quite well for Javascript but I am currently using Atom for most web dev tasks.
Set up
Select the Python you want
- Tools->Python->Python Environment
- Select the one for ESRI Python 2.7.14 64-bit for modern ArcMap work or 32-bit if you need to use old Personal Geodatabases.
- Choose "Make this the default for new projects"
You can change the python that a project uses anytime later.
Edit PYT files
By default VS only recognizes .py files as being python source, so the ESRI Python Toolbox files (.pyt) are not recognized. Change this in Visual Studio by going to Tools->Options->Text Editor and under File Extension enter pyt and select Python Editor and click "Add".
You still can't directly execute PYT files in the VS debugger, but at least you can edit them and it will recognize them as python code.
Tabs at 4, really?
Microsoft is still clinging to settings tabs in the text editor at 4. It should be tabs at 8 and insert spaces not "Keep tabs". Set it thus and avoid a world of pain*. "Insert spaces" means it will use spaces instead of mixing tabs and spaces.
Tools -> Options -> Python -> Tabs
- world of pain - you really are curious about this?
Since Python cares (a lot) about indentation, having the indents look consistent is not enough, eventually you will end up with a mixture of spaces and tabs in your .py file, and one line will have for example two tabs (2 X "tabs at 4" = 8) and it lines up with all the others which have 8 spaces. Then it will no longer compile, giving you the error about indentation being wrong even though everything looks just fine. (There will be a yellow line in the editor that you will ignore because everything looks okay.)
So the answer is to set it to "insert spaces", never put tabs anywhere, it's 2018 and saving a few hundred bytes by substituting tabs for spaces is no longer important.
Use Git for version control
Go to "Tools -> Options -> Source Control" and under "Plug-in Selection", switch to Git.
I set it this way, but so far I still use git from the command line.
I tried out the Github extension for VS and it works but I don't really see it as an advantage over using the commands. I use the git bash shell all day on Windows 7. I suppose if you never use bash it might be more difficult.
In Windows 10 there is the WSL "Windows Subsystem for Linux", comes from Microsoft, and gets you a variation on the same things: a bash command shell and git commands.
Enable the experimental support for Intellisense
This is a checkbox under Tools->Options->Python->Experimental
Intellisense is one of the main reasons to use Visual Studio. That's the code completion feature, where for example you type "arcpy.ListDataSets(" and VS pops up what arguments ListDatasets needs.
Templates
(Reminder to self: Visual Studio likes to keep your projects in %HOME%/source/repos)
I got tired of having to manually add "import arcpy" etc each time I created a new py file so I made an ArcPy template. Then I made one for Python tools, too. They are timesavers. I posted them on github as brian32768/visual_studio_templates I am building Javascript OpenLayers templates now, they will be in the same repository.
A template is comprised of a set of files in a zip. The code, a .vstemplate file, and an icon. Deployment is just dropping the zip file into your template folder, which for me is set to in J:\VisualStudio2017\Templates\
The repository will have more details, but refer to this page too. https://docs.microsoft.com/en-us/visualstudio/ide/creating-project-and-item-templates
Developing extensions in C#
I built some ESRI code samples to prove to myself it works but have not really gone further yet.
If you want to try to compile C# ArcObjects code, you will need the "workload" for C# and .Net. You will need to install the ArcObjects SDK from ESRI.
https://desktop.arcgis.com/en/system-requirements/latest/arcobjects-sdk-system-requirements.htm
ArcGIS Desktop, ArcGIS Engine, or ArcGIS Server is required to develop with ArcObjects SDK.
Microsoft .NET Framework 4.5 or higher; I am using 4.7.1 Note you can download additional .Net Frameworks from inside Visual Studio.
Code samples will be found in C:\Program Files (x86)\ArcGIS\DeveloperKit10.6
ArcGIS
I have not done much with Add-ins but I did start this page: ArcGIS Add-ins
I have a section on setting up Anaconda#ArcGIS Pro + Visual Studio
More help
Tutorial from Microsoft: https://docs.microsoft.com/en-us/visualstudio/python/tutorial-working-with-python-in-visual-studio-step-01-create-project