Skip to content

Commit efcaa1a

Browse files
authored
Merge pull request #904 from MicrosoftDocs/master
merge to live
2 parents 4f54864 + d38c0d7 commit efcaa1a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+977
-543
lines changed

.openpublishing.publish.config.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@
9292
"branch": "master",
9393
"branch_mapping": {}
9494
},
95+
{
96+
"path_to_root": "_themes.pdf",
97+
"url": "https://github.com/Microsoft/templates.docs.msft.pdf",
98+
"branch": "master"
99+
},
95100
{
96101
"path_to_root": "_repo.en-us",
97102
"url": "https://github.com/MicrosoftDocs/visualstudio-docs-pr",
@@ -111,6 +116,11 @@
111116
}
112117
}
113118
],
119+
"Targets": {
120+
"Pdf": {
121+
"template_folder": "_themes.pdf"
122+
}
123+
},
114124
"branch_target_mapping": {
115125
"live": [
116126
"Publish",
@@ -120,4 +130,4 @@
120130
"need_generate_pdf_url_template": true,
121131
"need_generate_pdf": false,
122132
"need_generate_intellisense": false
123-
}
133+
}

docs/debugger/debugger-tips-and-tricks.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ It's easy to view variables using debugger windows like the **Watch** window. Ho
7979

8080
5. Right-click the object ID variable and choose **Add Watch**.
8181

82-
For more information, see [Create an Object ID](https://docs.microsoft.com/en-us/visualstudio/debugger/watch-and-quickwatch-windows.md#bkmk_objectIds).
82+
For more information, see [Create an Object ID](../debugger/watch-and-quickwatch-windows.md#bkmk_objectIds).
8383

8484
## View return values for functions
8585

@@ -157,7 +157,10 @@ To find out how the debugger classifies code as user code, see [Just My Code](..
157157

158158
## Learn more
159159

160-
See this visual studio [blog post](https://blogs.msdn.microsoft.com/visualstudio/2017/06/26/7-lesser-known-hacks-for-debugging-in-visual-studio/) that describes some lesser known tips and tricks.
160+
For additional tips and tricks and more detailed information, see these blog posts:
161+
162+
- [7 lesser known hacks for debugging in Visual Studio](https://blogs.msdn.microsoft.com/visualstudio/2017/06/26/7-lesser-known-hacks-for-debugging-in-visual-studio/)
163+
- [7 hidden gems in Visual Studio](https://blogs.msdn.microsoft.com/visualstudio/2017/10/05/7-hidden-gems-in-visual-studio-2017/)
161164

162165
## See Also
163166
[Keyboard Shortcuts](../ide/tips-and-tricks-for-visual-studio.md)

docs/debugger/includes/remote-debugger-download.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ translation.priority.ht:
3232
>
3333
> Surface 3 switched from ARM to x64 architecture. An ARM version of the remote tools is not available for Visual Studio 2017. For Visual Studio 2015, find the ARM version in the Visual Studio 2015 RTW download.
3434
35-
3. When you have finished downloading the executable, follow the directions to install the application on the remote computer. Follow the [setup instructions](#bkmk_setup).
35+
3. When you have finished downloading the executable, go to the next section and follow setup instructions.
3636

3737
If you try to copy the remote debugger (msvsmon.exe) to the remote computer and run it, be aware that the **Remote Debugger Configuration Wizard** (**rdbgwiz.exe**) is installed only when you download the tools. You may need to use the wizard for configuration later, especially if you want the remote debugger to run as a service. For more information, see [(Optional) Configure the remote debugger as a service](../../debugger/remote-debugging.md#bkmk_configureService).

docs/debugger/using-the-debuggerdisplay-attribute.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ ms.technology:
88
- "vs-ide-debug"
99
ms.tgt_pltfrm: ""
1010
ms.topic: "article"
11-
dev_langs:
12-
- "CSharp"
13-
- "VB"
14-
- "FSharp"
15-
- "C++"
1611
helpviewer_keywords:
1712
- "attributes [C#], debugger"
1813
- "DebuggerDisplay attribute"

docs/debugger/watch-and-quickwatch-windows.md

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ static void Main(string[] args)
4444
}
4545
```
4646

47-
You can observe the a variable in the QuickWatch window as follows:
47+
You can observe a variable in the QuickWatch window as follows:
4848

4949
1. Set a breakpoint on the `a = a + b;` line.
5050

5151
2. Start debugging. Execution stops at the breakpoint.
5252

5353
3. Open the **QuickWatch** window (right-click on a, then choose **QuickWatch**, or **SHIFT+F9**).
5454

55-
You should see the a variable in the **Values** window, with a value of 1.
55+
You should see a variable in the **Values** window, with a value of 1.
5656

5757
![QuickWatch Expression](../debugger/media/watchexpression.png "QuickWatchExpression")
5858

@@ -104,7 +104,7 @@ int main()
104104

105105
You should see the variable values changing as you iterate through the `for` loop.
106106

107-
If you are programming in native code, you may sometimes need to qualify the context of a variable name or an expression containing a variable name. The context is the function, source file, and module where a variable is located. If you have to do this, you can use the context operator syntax. For more information, see [Context Operator (C++)](../debugger/context-operator-cpp.md).
107+
If you are programming in native code, you may sometimes need to qualify the context of a variable name or an expression containing a variable name. The context is the function, source file, and module where a variable is located. If you have to qualify the context, you can use the context operator syntax. For more information, see [Context Operator (C++)](../debugger/context-operator-cpp.md).
108108

109109
## Observing expressions with the Watch window
110110
Now let's try using an expression instead. You can add any valid expression recognized by the debugger.
@@ -118,7 +118,7 @@ int main()
118118
![Watch Expression Error](../debugger/media/watchexpressionerror.png "WatchExpressionError")
119119

120120
## <a name="bkmk_refreshWatch"></a> Refreshing Watch values that are out of date
121-
In certain circumstances you might see a refresh icon (a circular arrow) when an expression is evaluated in the **Watch** window. For example, if you have property evaluation turned off (**Tools > Options > Debugging > Enable property evaluation and other implicit function calls**), and you have the following code:
121+
In certain circumstances, you might see a refresh icon (a circular arrow) when an expression is evaluated in the **Watch** window. For example, if you have property evaluation turned off (**Tools > Options > Debugging > Enable property evaluation and other implicit function calls**), and you have the following code:
122122

123123
```CSharp
124124
static void Main(string[] args)
@@ -134,17 +134,17 @@ static void Main(string[] args)
134134

135135
![RefreshWatch](../debugger/media/refreshwatch.png "RefreshWatch")
136136

137-
This indicates an error or a value that is out of date. You can generally refresh the value by clicking on the icon, but in some cases you might prefer not to refresh it. First you need to know why the value was not evaluated.
137+
The preceding illustration shows an error or a value that is out of date. You can generally refresh the value by clicking on the icon, but in some cases you might prefer not to refresh it. First you need to know why the value was not evaluated.
138138

139139
If you point to the icon, a tooltip provides information about why the expression was not evaluated. If the circling arrows appear, the expression was not evaluated for one of the following reasons:
140140

141141
- An error occurred as the expression was being evaluated. For example, a time-out might have occurred, or a variable might have been out of scope.
142142

143-
- The expression contains a function call which could trigger a side effect in the application (see [Side Effects and Expressions](#bkmk_sideEffects)).
143+
- The expression contains a function call, which could trigger a side effect in the application (see [Side Effects and Expressions](#bkmk_sideEffects)).
144144

145145
- Automatic evaluation of properties and implicit functions calls by the debugger is turned off (**Tools > Options > Debugging > Enable property evaluation and other implicit function calls**), and then the expression cannot be automatically evaluated.
146146

147-
To refresh the value, click the refresh icon or press the spacebar. The debugger will try to reevaluate the expression. If the refresh icon appeared because automatic evaluation of properties and other implicit function calls was turned off, the expression can be evaluated.
147+
To refresh the value, click the refresh icon or press the spacebar. The debugger tries to reevaluate the expression. If the refresh icon appeared because automatic evaluation of properties and other implicit function calls was turned off, the expression can be evaluated.
148148

149149
If you see an icon that is a circle with two wavy lines that resemble threads, the expression was not evaluated because of a potential cross-thread dependency. In other words, evaluating the code requires other threads in your application to run temporarily. When you are in break mode, all threads in your application are typically stopped. Allowing other threads to run temporarily can have unexpected effects on the state of your program and causes the debugger to ignore events such as breakpoints and exceptions thrown on those threads.
150150

@@ -155,21 +155,22 @@ static void Main(string[] args)
155155
var1 = var2
156156
```
157157

158-
This is called a [side effect](https://en.wikipedia.org/wiki/Side_effect_\(computer_science\)). Side effects can make debugging more difficult by changing the way your program operates.
158+
This code can cause a [side effect](https://en.wikipedia.org/wiki/Side_effect_\(computer_science\)). Side effects can make debugging more difficult by changing the way your program operates.
159159

160-
An expression that is known to have side effects is evaluated only once, when you first enter it. Subsequent evaluations are disabled. You can manually override this behavior by clicking the update icon that appears next to the value.
160+
An expression that is known to have side effects is evaluated only once, when you first enter it. Subsequent evaluations are disabled. You can manually override this behavior by clicking the update icon that appears next to the value.
161161

162162
One way to avoid all side effects is to turn off automatic function evaluation (**Tools > Options > Debugging > Enable property evaluation and other implicit function calls**).
163163

164164
When evaluation of properties or implicit function calls is turned off, you can force evaluation by using the **ac** format modifier (for C# only). See [Format Specifiers in C#](../debugger/format-specifiers-in-csharp.md).
165165

166166
## <a name="bkmk_objectIds"></a> Using Object IDs in the Watch window (C# and Visual Basic)
167-
There are times when you want to observe the behavior of a specific object; for example, you might want to track an object referred to by a local variable after that variable has gone out of scope. In C# and Visual Basic, you can create object IDs for specific instances of reference types and use them in the Watch window and in breakpoint conditions. The object ID is generated by the common language runtime (CLR) debugging services and associated with the object.
167+
168+
There are times when you want to observe the behavior of a specific object. For example, you might want to track an object referred to by a local variable after that variable has gone out of scope. In C# and Visual Basic, you can create object IDs for specific instances of reference types and use them in the Watch window and in breakpoint conditions. The object ID is generated by the common language runtime (CLR) debugging services and associated with the object.
168169

169170
> [!NOTE]
170171
> Object IDs create weak references, and do not prevent the object from being garbage collected. They are valid only for the current debugging session.
171172
172-
In the following code one method creates a `Person` using a local variable, but you want to find out what the `Person`'s name is in a different method:
173+
In the following code, one method creates a `Person` using a local variable, but you want to find out what the `Person`'s name is in a different method:
173174

174175
```CSharp
175176
class Person
@@ -211,24 +212,24 @@ public class Program
211212

212213
2. Start debugging, and when execution stops in the breakpoint, find the variable in the **Locals** window, right-click it, and select **Make Object ID**.
213214

214-
3. You should see a **$** plus a number in the **Locals** window. This is the object ID.
215+
3. You should see a **$** plus a number in the **Locals** window, which represents the object ID.
215216

216217
4. Add the object ID to the Watch window.
217218

218-
5. Set a breakpoint where you want to observe the object's behavior. In the code above, that would be in the `DoSomething()` method.
219+
5. Set a breakpoint where you want to observe the object's behavior. In the preceding code, that would be in the `DoSomething()` method.
219220

220221
6. Continue debugging, and when execution stops in the `DoSomething()` method, the **Watch** window displays the `Person` object.
221222

222223
> [!NOTE]
223-
> If you want to see the object's properties, such as `Person.Name` in the example above, you must have enabled property evaluation .
224+
> If you want to see the object's properties, such as `Person.Name` in the example above, you must have enabled property evaluation.
224225
225226
## Using registers in the Watch window (C++ only)
226227
If you are debugging native code, you can add register names as well as variable names using **$\<register name>** or **@\<register name>**. For more information, see [Pseudovariables](../debugger/pseudovariables.md).
227228

228229
## Dynamic View and the Watch window
229-
Some scripting languages (e.g. JavaScript or Python) use dynamic or [duck typing](https://en.wikipedia.org/wiki/Duck_typing), and .NET languages (in version 4.0 and later) support objects that are difficult to observe using the normal debugging windows, because they may have runtime properties and methods that cannot be displayed.
230+
Some scripting languages (for example, JavaScript or Python) use dynamic or [duck typing](https://en.wikipedia.org/wiki/Duck_typing), and .NET languages (in version 4.0 and later) support objects that are difficult to observe using the normal debugging windows, because they may have runtime properties and methods that cannot be displayed.
230231

231-
When the Watch window displays a or an object created from a type that implements the [IDynamicMetaObjectProvider Interface](https://docs.microsoft.com/en-us/dotnet/api/system.dynamic.idynamicmetaobjectprovider?view=netframework-4.7), the debugger adds a special **Dynamic View** node to the **Autos** display. This node shows the dynamic members of the dynamic object but does not allow editing of the member values.
232+
When the Watch window displays an object created from a type that implements the [IDynamicMetaObjectProvider Interface](https://docs.microsoft.com/en-us/dotnet/api/system.dynamic.idynamicmetaobjectprovider?view=netframework-4.7), the debugger adds a special **Dynamic View** node to the **Autos** display. This node shows the dynamic members of the dynamic object but does not allow editing of the member values.
232233

233234
If you right-click any child of a **Dynamic View** and choose **Add Watch**, the debugger inserts a new watch variable that casts an object to a dynamic object. In other words, **object Name** becomes (**(dynamic)object).Name**.
234235

docs/ide/TOC.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
## [Synchronized Settings in Visual Studio](synchronized-settings-in-visual-studio.md)
99
# [Get Started Developing with Visual Studio](get-started-developing-with-visual-studio.md)
1010
## [Getting Started with Visual C# and Visual Basic](getting-started-with-visual-csharp-and-visual-basic.md)
11+
### [Quickstart: Create your first ASP.NET Core web app](../ide/quickstart-aspnet-core.md)
1112
### [Walkthrough: Create a Simple Application with Visual C# or Visual Basic](walkthrough-create-a-simple-application-with-visual-csharp-or-visual-basic.md)
1213
### [Tutorial 1: Create a Picture Viewer](tutorial-1-create-a-picture-viewer.md)
1314
#### [Step 1: Create a Windows Forms Application Project](step-1-create-a-windows-forms-application-project.md)

0 commit comments

Comments
 (0)