Skip to content
Home » Python Visual Studio 2017 | Python Tools For Visual Studio

Python Visual Studio 2017 | Python Tools For Visual Studio

Python Tools for visual studio 2017

Open source

Fork us on Github

Python Tools for Visual Studio is a completely free extension, developed and supported by Microsoft with contributions from the community. Visit our Github page to see or participate in PTVS development.

Step 5: Install packages in your Python environment

Previous step: Run code in the debugger

The Python developer community has produced thousands of useful packages that you can incorporate into your own projects. Visual Studio provides a UI to manage packages in your Python environments.

View environments

  1. Select the View > Other Windows > Python Environments menu command. The Python Environments window opens as a peer to Solution Explorer and shows the different environments available to you. The list shows both environments that you installed using the Visual Studio installer and environments you installed separately. That includes global, virtual, and conda environments. The environment in bold is the default environment that’s used for new projects. For more information about working with environments, see How to create and manage Python environments in Visual Studio environments.

    Note

    You can also use the Ctrl+K, Ctrl+` keyboard shortcut to open the Python Environments window from the Solution Explorer window. If the shortcut doesn’t work and you can’t find the Python Environments window in the menu, it’s possible that you haven’t installed the Python workload. See How to install Python support in Visual Studio on Windows for guidance about how to install Python.

    With a Python project open, you can open the Python Environments window from Solution Explorer. Right-click Python Environments and select View All Python Environments.

  2. Now, create a new project with File > New > Project, selecting the Python Application template.

  3. In the code file that appears, paste the following code, which creates a cosine wave like the previous tutorial steps, only this time plotted graphically. You can also use the project you previously created and replace the code.


    from math import radians import numpy as np # installed with matplotlib import matplotlib.pyplot as plt def main(): x = np.arange(0, radians(1800), radians(12)) plt.plot(x, np.cos(x), 'b') plt.show() main()

  4. In the editor window, hover over the


    numpy

    and

    matplotlib

    import statements. You’ll notice that they aren’t resolved. To resolve the import statements, install the packages to the default global environment.

  5. When you look at the editor window, notice that when you hover over the


    numpy

    and

    matplotlib

    import statements that they aren’t resolved. The reason is the packages haven’t been installed to the default global environment.

    For example, select Open interactive window and an Interactive window for that specific environment appears in Visual Studio.

  6. Use the drop-down list below the list of environments to switch to the Packages tab.The Packages tab lists all packages that are currently installed in the environment.

Python Tools for visual studio 2017
Python Tools for visual studio 2017

Install packages using the Python Environments window

  1. From the Python Environments window, select the default environment for new Python projects and choose the Packages tab. You’ll then see a list of packages that are currently installed in the environment.

  2. Install


    matplotlib

    by entering its name into the search field and then selecting the Run command: pip install matplotlib option. Running the command will install

    matplotlib

    , and any packages it depends on (in this case that includes

    numpy

    ).

  3. Choose the Packages tab.

  4. Consent to elevation if prompted to do so.

  5. After the package is installed, it appears in the Python Environments window. The X to the right of the package uninstalls it.

  6. Consent to elevation if prompted to do so.

  7. After the package installs, it appears in the Python Environments window. The X to the right of the package uninstalls it.

    Note

    A small progress bar might appear underneath the environment to indicate that Visual Studio is building its IntelliSense database for the newly-installed package. The IntelliSense tab also shows more detailed information. Be aware that until that database is complete, IntelliSense features like auto-completion and syntax checking won’t be active in the editor for that package.

    Visual Studio 2017 version 15.6 and later uses a different and faster method for working with IntelliSense, and displays a message to that effect on the IntelliSense tab.

Review elements in Solution Explorer

Take some time to familiarize yourself with Solution Explorer, where you can browse files and folders in your project.

  • (1) At the top level is the solution, which by default has the same name as your project. A solution, which is shown as an .sln file on disk, is a container for one or more related projects. For example, if you write a C++ extension for your Python application, that C++ project can be in the same solution. The solution might also contain a project for a web service, and projects for dedicated test programs.

  • (2) Your project is highlighted in bold and uses the name you entered in the Create a new project dialog. On disk, this project is represented by a .pyproj file in your project folder.

  • (3) Under your project you see source files. In this example, you have only a single .py file. Selecting a file displays its properties in the Properties window. If you don’t see the Properties window, select the wrench icon in the Solution Explorer banner. Double-clicking a file opens it in whatever way is appropriate for that file.

  • (4) Also under the project is the Python Environments node. Expand the node to show the available Python interpreters.

  • (5) Expand an interpreter node to see the libraries installed in that environment.

Right-click any node or item in Solution Explorer to show a context menu of applicable commands. For example, Rename lets you change the name of a node or item, including the project and the solution.

Creating a Python project in Visual Studio 2017
Creating a Python project in Visual Studio 2017

Feedback

Submit and view feedback for

Python tools for Visual Studio

Python support for Visual Studio is developed and managed here.

  • Visit our product overview and downloads page, read our documentation and watch our (old) YouTube tutorials.
  • Feel free to file issues or ask questions on our issue tracker, or use the Send Feedback functionality in Visual Studio to report a problem or suggest a feature.
  • We welcome code contributions – see Contributing for information. Documentation contributions may be made at the visualstudio-docs repository.
  • For all other documentation, please see the Wiki

Phản hồi

Gửi và xem ý kiến phản hồi dành cho

Tutorial: Work with Python in Visual Studio

In this tutorial, you learn how to work with Python in Visual Studio. Python is a popular programming language that’s reliable, flexible, easy to learn, and free to use on all operating systems. Python is supported by a strong developer community and many free libraries. The language supports all kinds of development, including web applications, web services, desktop apps, scripting, and scientific computing. Many universities, scientists, casual developers, and professional developers use Python. Visual Studio provides first-class language support for Python.

This tutorial guides you through a six-step process:

  • Step 1: Create a Python project (this article)
  • Step 2: Write and run code to see Visual Studio IntelliSense at work
  • Step 3: Create more code in the Interactive REPL window
  • Step 4: Run the completed program in the Visual Studio debugger
  • Step 5: Install packages and manage Python environments
  • Step 6: Work with Git

This article covers the tasks in Step 1. You create a new project and review the UI elements visible in Solution Explorer.

IPGRAY : python - How to create python project in visual studio 2017
IPGRAY : python – How to create python project in visual studio 2017

Review Python interpreters

The following table lists Python interpreters that can be used with Visual Studio.

Interpreter Description Notes
CPython The “native” and most commonly used interpreter, available in 32-bit and 64-bit versions (32-bit recommended). Includes the latest language features, maximum Python package compatibility, full debugging support, and interop with IPython. Review the considerations in Should I use Python 2 or Python 3? to help determine which version of Python to install. Visual Studio 2015 and earlier don’t support Python 3.6 or later, and can return errors like Unsupported python version 3.6. For Visual Studio 2015 and earlier, use Python 3.5 or earlier.
IronPython A .NET implementation of Python, available in 32-bit and 64-bit versions. Provides C#/F#/Visual Basic interop, access to .NET APIs, standard Python debugging (but not C++ mixed-mode debugging), and mixed IronPython/C# debugging. IronPython doesn’t support virtual environments.
Anaconda An open data science platform powered by Python. Includes the latest version of CPython and most of the difficult-to-install packages. If you’re unable to decide on an interpreter, we recommend using Anaconda.
PyPy A high-performance tracing JIT implementation of Python. Good for long-running programs and situations where you identify performance issues but can’t find other resolutions. Works with Visual Studio but with limited support for advanced debugging features.
Jython An implementation of Python on the Java Virtual Machine (JVM). Similar to IronPython, code running in Jython can interact with Java classes and libraries. However, many of the libraries intended for CPython might not be accessible. Works with Visual Studio but with limited support for advanced debugging features.

Step 1: Create a new Python project

A project is how Visual Studio manages all the files that come together to produce a single application. Application files include source code, resources, and configurations. A project formalizes and maintains the relationships among all the project’s files. The project also manages external resources that are shared between multiple projects. A project allows your application to effortlessly expand and grow. Using projects is easier than managing relationships by hand in unplanned folders, scripts, text files, and your memory.

This tutorial begins with a simple project containing a single, empty code file.

  1. In Visual Studio, select File > New > Project to open the New Project dialog. You can also use the keyboard shortcut Ctrl+Shift+N. In the dialog, you can browse templates across different languages, select a template for your project, and specify where Visual Studio places files.

  2. To view Python templates, select Installed > Python on the left menu, or search for “Python.” The search option is a great way to find a template when you can’t remember its location in the languages tree.

    Python support in Visual Studio includes several project templates, including web applications using the Bottle, Flask, and Django frameworks. For the purposes of this walkthrough, however, let’s start with an empty project.

  3. Select the Python Application template, specify a name for the project, and select OK.

  1. In Visual Studio, select File > New > Project or use the keyboard shortcut Ctrl+Shift+N. The Create a new project screen opens, where you can search and browse templates across different languages.

  2. To view Python templates, search for python. Search is a great way to find a template when you can’t remember its location in the languages tree.

    Python web support in Visual Studio includes several project templates, such as web applications in the Bottle, Flask, and Django frameworks. When you install Python with the Visual Studio Installer, select Python Web Support under Optional to install these templates. For this tutorial, start with an empty project.

  3. Select the Python Application template, and select Next.

  4. On the Configure your new project screen, specify a name and file location for the project, and then select Create.

After a few moments, your new project opens in Visual Studio:

Here’s what you see:

  • (1) The Visual Studio Solution Explorer window shows the project structure.
  • (2) The default code file opens in the editor.
  • (3) The Properties window shows more information for the item selected in Solution Explorer, including its exact location on disk.
Build and setup Python and Opencv in Visual Studio 2017
Build and setup Python and Opencv in Visual Studio 2017

Version Control integration

Collaborate on code with Git

Use Git as the default source control experience in Visual Studio right out of the box. From the new Git menu, you can create or clone repositories from GitHub or Azure DevOps. Use the integrated Git tool windows to commit and push changes to your code, manage branches, sync with your remote repositories, and resolve merge conflicts.

Detect your environment

Visual Studio shows all known environments in the Python Environments window. It automatically detects updates to existing interpreters.

If Visual Studio doesn’t detect an installed environment, see Manually identify an existing environment.

If you want to provide new forms of detection for Python environments, see PTVS Environment Detection (github.com).

Registry entries

Visual Studio (all versions) automatically detects each installed Python interpreter and its environment by checking the registry according to PEP 514 – Python registration in the Windows registry. Python installations are typically found under the HKEY_LOCAL_MACHINE\SOFTWARE\Python (32-bit) and HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python (64-bit) key within nodes for the distribution, such as PythonCore (CPython) and ContinuumAnalytics (Anaconda).

Cài gói ngôn ngữ lập trình Python cho Visual Studio 2017
Cài gói ngôn ngữ lập trình Python cho Visual Studio 2017

Feedback

Submit and view feedback for

Trong bài viết kỳ này, Học Viện Agile sẽ hướng dẫn bạn cách download, cài đặt lập trình Python trên Visual Studio Code 2017 và các extension cần thiết để lập trình dễ dàng, tiện lợi hơn.

Visual Studio Code là trình hỗ trợ soạn thảo code có sẵn cho macOS, Windows và Linux. Visual Studio Code đi kèm với hệ sinh thái mở rộng phong phú, kèm các ngôn ngữ C++, C#, Java, Python, Go… Trình biên tập mã Visual Studio Code là phần mềm mã nguồn mở được phát triển bởi Microsoft, có khả năng hỗ trợ debug, đi kèm với Git, syntax highlighting, hoàn thành mã thông minh và cải tiến mã nguồn. Người dùng cũng có thể tùy chỉnh thay đổi theme, phím tắt và nhiều tùy chọn khác.

Visual Studio Code – công cụ hỗ trợ lập trình Python mạnh mẽ

Yêu cầu cấu hình tối thiểu

Ưu điểm

Nhược điểm

Để kiểm tra máy đã cài phiên bản Python 3 chưa, bạn sử dụng lệnh Python – version. Nếu máy đã cài đặt Python, màn hình sẽ hiện ra version và không báo lỗi.

Trong trường hợp máy chưa cài đặt Python, bạn download tại đây.

Đối với hệ điều hành macOS, sau khi cài đặt Python, các bạn vào thư mục Python tìm file Install Certificates.command. Nhấn Enter mở file, file tự động chạy và tạo certificates dùng khi chạy chương trình sau này.

Lưu ý: Nhớ đánh dấu chọn Add Python to PATH để câu lệnh có thể được chạy từ bất kỳ đâu.

Link tải bộ cài đặt Visual Studio Code

Nếu bạn đang phát triển các phần mềm liên quan đến data science, có thể cài đặt thêm các ứng dụng hỗ trợ tính toán và data science. Tham khảo thêm tại đây.

Ở cột bên phải, ấn tick vào các tùy chọn. Có thể bỏ qua phần này nếu bạn muốn sử dụng tùy chọn mặc định.

Diễn giải các tùy chọn

Tùy chọn Giải thích
Python distributions Gồm các tùy chọn 32-bit, 64-bit và Python 2, Python 3, Miniconda, Anaconda2, Anaconda3. Anaconda là platform mã nguồn mở bao gồm nhiều gói cài đặt.
Cookiecutter template support Cài đặt Cookiecutte GUI để thêm template, tạo project và file. Xem thêm tại đây.
Python web support Cài đặt công cụ phát triển web như HTML, CSS và JavaScript cùng Bottle, Flask, Django. Xem thêm tại đây.
Python native development tools Cài đặt trình biên dịch C++ và các ứng dụng cần thiết khác để phát triển thêm các phần mở rộng cho Python.

Sau khi tải về trình cài đặt, các bạn có thể chọn Modify (điều chỉnh), Launch, Repair hoặc Uninstall Visual Studio. Nút Modify cho phép bạn tùy chọn cập nhật khi có bản updates của Visual Studio.

Visual Studio IntelliCode là extension giúp hỗ trợ viết code tốt hơn nhờ trí tuệ nhân tạo. Trong tương lai, extension này có thể sẽ được tích hợp ngay trong Visual Studio Code.

Visual Studio Intellicode hỗ trợ viết code nhanh, đơn giản

Để tiết kiệm thời gian chỉnh sửa cài đặt trình soạn thảo code, bạn có thể sử dụng Setting Sync. Extension này dùng GitHub Gist để đồng bộ cài đặt, người dùng chỉ cần thay đổi trên một máy là có thể dễ dàng đồng bộ trên nhiều máy khác. Quá trình đồng bộ thường mất vài phút và có thể kiểm tra thiết lập thông qua mục tổng quan Extensions trong Visual Studio Code.

Extension phù hợp cho các lập trình viên cần chỉnh sửa file cấu hình hệ thống, cho phép hoàn thành kiểu Intellisense cho tên file, nhập đường dẫn dài mà không cần lưu vào bộ nhớ.

GitLens có chế độ xem khác biệt, giúp người dùng so sánh các commit và branch, cho phép người sử dụng tìm kiếm thông tin lịch sử commit dự án, tên tác giả, file…

GitLens giúp lập trình viên xem khác biệt giữa commit và branch

Code Time giúp theo dõi hoạt động của lập trình viên Visual Studio Code, báo cáo cho bạn khoảng thời gian nào là tốt nhất trong ngày để lập trình. Ngoài ra, người dùng có thể thiết lập chế độ gửi báo cáo qua email hàng tuần hoặc lên lịch cùng Google Calendar.

Theo dõi thời gian hoạt động với Code Time để tăng năng suất và hiệu quả làm việc

Trên đây là một số hướng dẫn giúp các bạn dễ dàng cài đặt và lập trình Python trên Visual Studio 2017. Ngoài kiến thức chuyên môn, để tiến xa hơn trong sự nghiệp, lập trình viên cần trang bị thêm kỹ năng quản trị dự án, điều phối công việc để phát huy tối đa năng lực của đội nhóm. Các bạn có thể tham khảo thêm về Agile Software Development – tư duy phát triển phần mềm đem lại hiệu quả và năng suất cao, đang là sự lựa chọn hàng đầu của khách hàng & nhà phát triển. Mô hình Agile đã được áp dụng rất rộng rãi trên thế giới và bắt được phát triển mạnh mẽ tại Việt Nam. Học viện Agile tự hào là đơn vị đầu tiên đưa Agile đến gần hơn với các doanh nghiệp và cá nhân trong ngành công nghệ tại Việt Nam.

Chưa có sản phẩm nào trong giỏ hàng.

Develop Python applications

Move an interpreter

If you move an existing interpreter to a new location by using the file system, Visual Studio doesn’t automatically detect the change.

  • If you originally specified the location of the interpreter through the Python Environments window, you can edit its environment by using the Configure tab in that window to identify the new location. For more information, see Manually identify an existing environment.

  • If you installed the interpreter by using an installer program, use the following steps to reinstall the interpreter in the new location:

    1. Restore the Python interpreter to its original location.
    2. Uninstall the interpreter by using its installer, which clears the registry entries.
    3. Reinstall the interpreter at the new location.
    4. Restart Visual Studio, which should autodetect the new location in place of the old location.

This process ensures that the registry entries that identify the interpreter’s location, which Visual Studio uses, are properly updated. Using an installer also handles any other side effects that might exist.

Visual Studio Community 2017 for python - Installation Steps | Python Job Ready Professional
Visual Studio Community 2017 for python – Installation Steps | Python Job Ready Professional

Visual Studio 2015 and earlier

Prior to Visual Studio 2017, Python support was released as a standalone extension. We are no longer actively developing these versions, but if you are unable to upgrade to Visual Studio 2017 yet, you can use these older installers to get Python support.

PTVS 2.2.6 is the latest available version for Visual Studio 2015. You can also find it in the Visual Studio 2015 installer by selecting “Custom” and looking under the “Programming Languages” category.

PTVS 2.2.2 is the last release for Visual Studio 2013 users.

Thank you for using and supporting Python Tools for Visual Studio.

Install Python interpreters

There are several options for installing Python interpreters to work with Visual Studio. You can install an interpreter when you install the Python workload, or you can install an interpreter after a workload is present. Interpreters can also be installed manually outside of the Visual Studio Installer.

When you install the Python development workload in Visual Studio 2017 and later, Python 3 (64-bit) also installs by default. As an option, you can choose to install the 32-bit or 64-bit version of Python 2 or Python 3, along with Miniconda (Visual Studio 2019) or Anaconda 2/Anaconda 3 (Visual Studio 2017). The steps for this type of installation are described in Install Python support in Visual Studio.

An alternate approach is to install standard Python interpreters by using the Add Environment feature in Visual Studio. This option is available in the Python Environments window and the Python toolbar.

Python interpreters can also be installed manually outside of the Visual Studio Installer. Suppose you install Anaconda 3 before you install Visual Studio. You don’t need to reinstall Anaconda through the Visual Studio Installer. You can also install a newer version of an interpreter if it isn’t yet listed in the Visual Studio Installer.

Download and install the Python workload

Complete the following steps to download and install the Python workload.

  1. Download and run the latest Visual Studio Installer for Windows. Python support is present in release 15.2 and later. If you have Visual Studio installed already, open Visual Studio and run the installer by selecting Tools > Get Tools and Features.

    Tip

    The Community edition is for individual developers, classroom learning, academic research, and open source development. For other uses, install Visual Studio Professional or Visual Studio Enterprise.

  2. The installer provides a list of workloads that are groups of related options for specific development areas. For Python, select the Python development workload and select Install:

    Python installation options Description Python distributions Choose any combination of Python distribution that you plan to work with. Common options include 32-bit and 64-bit variants of Python 2, Python 3, Miniconda, Anaconda 2, and Anaconda 3. Each option includes the distribution’s interpreter, runtime, and libraries. Anaconda, specifically, is an open data science platform that includes a wide range of preinstalled packages. Visual Studio automatically detects existing Python installations. For more information, see The Python Environments window. Also, if a newer version of Python is available than the version shown in the installer, you can install the new version separately and Visual Studio detects it. Cookiecutter template support Install the Cookiecutter graphical UI to discover templates, input template options, and create projects and files. For more information, see Use the Cookiecutter extension. Python web support Install tools for web development including HTML, CSS, and JavaScript editing support, along with templates for projects using the Bottle, Flask, and Django frameworks. For more information, see Python web project templates. Python native development tools Install the C++ compiler and other necessary components to develop native extensions for Python. For more information, see Create a C++ extension for Python. Also install the Desktop development with C++ workload for full C++ support.

    By default, the Python workload installs for all users on a computer under:

    %ProgramFiles%\Microsoft Visual Studio\

    \

    Common7\IDE\Extensions\Microsoft\Python

    where

    is 2022 and

    is Community, Professional, or Enterprise.

    %ProgramFiles(x86)%\Microsoft Visual Studio\

    \

    Common7\IDE\Extensions\Microsoft\Python

    where

    is 2019 or 2017 and

    is Community, Professional, or Enterprise.

How to run Python in Visual Studio Code on Windows 10/11 [ 2024 Update ] Python Developers
How to run Python in Visual Studio Code on Windows 10/11 [ 2024 Update ] Python Developers

Prerequisites

  • Visual Studio supports Python version 3.7. While it’s possible to use an earlier version of Visual Studio to edit code written in earlier versions of Python, those versions of Python aren’t officially supported. Visual Studio features such as IntelliSense and debugging might not work with earlier versions of Python.

  • For Visual Studio 2015 and earlier, use Python 3.5 or earlier. You must manually install one of the Python interpreters.

Anaconda distributions

Although Visual Studio offers to install the Anaconda distribution, your use of the distribution and other packages from Anaconda Repository are bound by the Anaconda Terms of Service. These terms might require some organizations to pay Anaconda for a commercial license, or else configure the tools to access an alternate repository. For more information, see the Conda channels documentation.

Test your install

Quickly check your installation of Python support:

  1. Launch Visual Studio.

  2. Select Alt + I to open the Python Interactive window.

  3. In the window, enter the statement


    2+2

    .

    The statement output

    displays in the window. If you don’t see the correct output, recheck your steps.

How to Run Python File in Visual Studio Code | Run Python in VSCode
How to Run Python File in Visual Studio Code | Run Python in VSCode

Keywords searched by users: python visual studio 2017

Python Support In Visual Studio 2017 - Python
Python Support In Visual Studio 2017 – Python
A Lap Around Python In Visual Studio 2017 - Visual Studio Blog
A Lap Around Python In Visual Studio 2017 – Visual Studio Blog
Lập Trình Python Trên Visual Studio Code 2017 Từ A - Z
Lập Trình Python Trên Visual Studio Code 2017 Từ A – Z
Released: Python Support In Visual Studio 2017 - Python
Released: Python Support In Visual Studio 2017 – Python
A Lap Around Python In Visual Studio 2017 - Visual Studio Blog
A Lap Around Python In Visual Studio 2017 – Visual Studio Blog
Lập Trình Python Trên Visual Studio Code 2017 Từ A - Z
Lập Trình Python Trên Visual Studio Code 2017 Từ A – Z
Python Tools For Visual Studio 2017 - Youtube
Python Tools For Visual Studio 2017 – Youtube
Options And Settings For Python - Visual Studio (Windows) | Microsoft Learn
Options And Settings For Python – Visual Studio (Windows) | Microsoft Learn
Lập Trình Python Trên Visual Studio Code 2017 Từ A - Z
Lập Trình Python Trên Visual Studio Code 2017 Từ A – Z
Visual Studio 2017 Crashes When Trying To Open Python Environment Window  From Tools - Microsoft Q&A
Visual Studio 2017 Crashes When Trying To Open Python Environment Window From Tools – Microsoft Q&A
Python Support Is Now Stable In Visual Studio 2017 - Python
Python Support Is Now Stable In Visual Studio 2017 – Python
Released: Python Support In Visual Studio 2017 - Python
Released: Python Support In Visual Studio 2017 – Python
Python Tools For Visual Studio 2017 - Youtube
Python Tools For Visual Studio 2017 – Youtube
Python Support In Visual Studio On Windows | Microsoft Learn
Python Support In Visual Studio On Windows | Microsoft Learn
Visual Studio 2019 Goes Live With C++, Python Shared Editing | Ars Technica
Visual Studio 2019 Goes Live With C++, Python Shared Editing | Ars Technica
Hướng Dẫn Sử Dụng Visual Studio Code A-Z Toàn Tập
Hướng Dẫn Sử Dụng Visual Studio Code A-Z Toàn Tập
Options And Settings For Python - Visual Studio (Windows) | Microsoft Learn
Options And Settings For Python – Visual Studio (Windows) | Microsoft Learn
Python Tools For Visual Studio 2.1 Rc Now Available For Download -  Mspoweruser
Python Tools For Visual Studio 2.1 Rc Now Available For Download – Mspoweruser
A Lap Around Python In Visual Studio 2017 - Visual Studio Blog
A Lap Around Python In Visual Studio 2017 – Visual Studio Blog

See more here: kientrucannam.vn

Leave a Reply

Your email address will not be published. Required fields are marked *