我在Windows 8.1 PC上安装了visual studio 2013 express版.然后我安装了VS 2013专业版.现在我想运行快速版来验证express和pro之间可用的某些功能,但是我找不到如何启动快速版本.每当我通过Windows 8.1搜索框搜索它时,我只是获得专业版.
任何人都可以指向我安装快速版本可执行文件的位置,以便我可以启动它吗?VS安装在C:\Program Files (x86)\Microsoft Visual Studio 12.0,我假设它在这里我应该安装快递和专业版本.
出于某种原因,我加载psscor4后无法运行任何命令.我从MS网站下载了x64的psscor4,并把它放在windbg所在的同一文件夹中.在加载psscor4之前,我可以毫无问题地运行sos命令.
0:003> .loadby sos clr
0:003> lmvm clr
start end module name
00007ffa`35630000 00007ffa`35fc8000 clr (deferred)
Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Image name: clr.dll
Timestamp: Wed Nov 27 19:25:30 2013 (52968D7A)
CheckSum: 00996ED8
ImageSize: 00998000
File version: 4.0.30319.34011
Product version: 4.0.30319.34011
File flags: 8 (Mask 3F) Private
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® .NET Framework
InternalName: clr.dll
OriginalFilename: clr.dll
ProductVersion: 4.0.30319.34011
FileVersion: 4.0.30319.34011 built by: FX45W81RTMGDR
PrivateBuild: DDBLD109
FileDescription: …Run Code Online (Sandbox Code Playgroud) 我有一些代码,其中WHERE子句中使用的变量可以为空.因此,我必须使用IF ELSE查询数据以检查NULL.无论如何在一个查询中写入?
DECLARE @OrderID UNIQUEIDENTIFIER
IF @OrderID IS NULL
BEGIN
SELECT *
FROM Customers
WHERE OrderID IS NULL
END
ELSE
BEGIN
SELECT *
FROM Customers
WHERE OrderID = @OrderID
END
Run Code Online (Sandbox Code Playgroud) 我对调试过程和调试器的理解是,当一个断点被击中时,所有其他线程都被冻结.但是我的一位同事说这个选项是可配置的,这意味着你可以在Visual Studio选项的某个地方配置其他线程(没有断点)继续正常工作,尽管带有断点的线程被冻结.我在visual studio中找不到任何这样的设置,加上我的同事不记得他在哪里看到那个设置,尽管他似乎非常有信心这个选项存在.
有人可以确认,当一个线程由于断点而被冻结时,是否有可能让其他线程运行?如果有这样的设置,请告诉我在哪里找到它.
debugging multithreading breakpoints visual-studio visual-studio-2012
我试图确定是什么导致我的应用程序高内存使用率。所以我拿了进程转储文件。EEHeap命令显示.NET内存堆中大约有2.8 GB。
0:000> !EEHeap -gc
Number of GC Heaps: 2
------------------------------
Heap 0 (00000000001e3030)
generation 0 starts at 0x00000000a5f21360
generation 1 starts at 0x00000000a5c45a60
generation 2 starts at 0x000000007fff1000
ephemeral segment allocation context: none
segment begin allocated size
000000007fff0000 000000007fff1000 00000000beeca248 0x3eed9248(1055756872)
Large object heap starts at 0x000000027fff1000
segment begin allocated size
000000027fff0000 000000027fff1000 000000028f7d42f8 0xf7e32f8(259928824)
Heap Size: Size: 0x4e6bc540 (1315685696) bytes.
------------------------------
Heap 1 (00000000001ed9e0)
generation 0 starts at 0x00000001a6c77908
generation 1 starts at 0x00000001a69a8370
generation 2 starts at …Run Code Online (Sandbox Code Playgroud) 我需要创建一个新用户,然后将权限设置为两个不同数据库中的不同表.这是我创建用户的脚本
CREATE LOGIN [MyUser] WITH PASSWORD=N'something' , CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
CREATE USER [MyUser] FOR LOGIN [MyUser] WITH DEFAULT_SCHEMA=[dbo]
GO
CREATE ROLE MyRole AUTHORIZATION [dbo]
GO
EXEC sp_addrolemember N'MyRole', N'MyUser'
GO
Run Code Online (Sandbox Code Playgroud)
现在我有两个数据库MyDb1和MyDb2.我需要为此用户授予对MyDb1.Table1和MyDb2.Table2的select访问权限.我是否需要先为MyDb1和MyDb2创建此用户?如果是这样,怎么能实现呢?
我的转储文件包含OutOfMemoryException,但所有对象字段似乎都为null.这只是一个误报,还是有人知道这个例外?
0:052> !do 000000027fff10e8
The version of SOS does not match the version of CLR you are debugging. Please
load the matching version of SOS for the version of CLR you are debugging.
CLR Version: 4.0.30319.18449
SOS Version: 4.0.30319.34011
Name: System.OutOfMemoryException
MethodTable: 000007fcb5476920
EEClass: 000007fcb4f3cd88
Size: 160(0xa0) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
MT Field Offset Type VT Attr Value Name
000007fcb5476508 4000002 8 System.String 0 instance 0000000000000000 _className
000007fcb547e880 4000003 10 ...ection.MethodBase 0 instance 0000000000000000 _exceptionMethod
000007fcb5476508 4000004 18 System.String 0 …Run Code Online (Sandbox Code Playgroud) 这是我的代码的简化版本,下面是生成以下编译错误
无法将类型'void'隐式转换为'System.Threading.Tasks.Task'
在这种情况下,GetDataAsync方法不需要返回任何内容.如何让它返回我可以等待的任务?
static async void Run()
{
List<string> IDs = new List<string>() { "a", "b", "c", "d", "e", "f" };
Task[] tasks = new Task[IDs.Count];
for (int i = 0; i < IDs.Count; i++)
tasks[i] = await GetDataAsync(IDs[i]);
Task.WaitAll(tasks);
}
async static Task GetDataAsync(string id)
{
var data = await Task.Run(() => GetDataSynchronous(id));
// some other logic to display data in ui
}
Run Code Online (Sandbox Code Playgroud) 我的理解是!dumpheap命令列出了.NET堆中存在的所有非垃圾回收对象.在这种情况下,如果我对一个对象地址运行!gcroot命令(通过!dumpheap -mt XXX找到),它应该总是给我一个引用该对象的堆栈跟踪.但是我找到了一些例子,我可以找到!dumpheap中列出的对象的根.是我的理解!dumpheap和!gcroot不正确?如果您想查看示例,请在此处发布我在其他问题中描述的示例
让\xe2\x80\x99s 说我的应用程序有两个线程A 和B,每个线程都会抛出异常。~{threadid}s我可以通过使用然后运行来确定哪个线程引发了哪个异常吗!pe?
sos ×5
.net ×4
windbg ×4
c# ×3
exception ×2
sosex ×2
t-sql ×2
async-await ×1
breakpoints ×1
debugging ×1
task ×1
windows-8.1 ×1