Visual Studio 2015内置支持Grunt,Bower,Gulp和NPM for ASP.NET 5项目等工具.
但是,当我使用Visual Studio 2015创建ASP.NET 4.5.2项目时,它不使用这些工具.我想使用bower而不是nuget来管理客户端软件包.
我可以在Visual Studio 2013中找到有关使用这些工具的信息(例如,请参阅此问题).但我想Visual Studio 2015的程序是不同的,因为它内置了对这些工具的支持.
当我创建一个新项目时,我对未处理的异常会有一个奇怪的行为.这就是我可以重现问题的方法:
1)创建一个新的Windows窗体应用程序(C#,. NET Framework 4,VS2010)
2)将以下代码添加到Form1_Load处理程序:
int vara = 5, varb = 0;
int varc = vara / varb;
int vard = 7;
Run Code Online (Sandbox Code Playgroud)
我希望VS中断并在第二行显示未处理的异常消息.但是,会发生的是第三行只是跳过而没有任何消息,应用程序一直在运行.
我现有的C#项目没有这个问题.所以我想我的新项目是用一些奇怪的默认设置创建的.
有没有人知道我的项目有什么问题?
我试过检查Debug-> Exceptions中的方框.但即使我在try-catch块中处理异常,执行也会中断; 这也不是我想要的.如果我没记错的话,在这个对话框中有一个名为"未处理的异常"的列或者类似的东西,这会让我感到非常兴奋.但在我的项目中只有一列("Thrown").
使用Boost版本1.47,引入了Chrono库.Boost.Chrono是否意味着替代Boost.Date_Time?
如果没有,它们之间有什么区别,我应该在什么时候使用?
我应该何时考虑在现有项目中用Boost.Chrono替换Boost.Date_Time?
我试图忽略来自某些第三方头文件的警告,如下所示:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
#pragma GCC diagnostic ignored "-Wreorder"
#include <some_3rd_party_header.h>
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)
这种方法似乎总体上起作用,但不适用于未知的pragma警告(我仍然得到它们).
为什么它适用于其他警告但不适用于此警告?谁能证实这种行为?
我使用的是G ++(版本4.7.1)与-Wall和-std=c++0xDebian的下.
当不是在switch语句中处理所有可能的枚举值时,我想得到编译器警告或错误.当然,我可以添加一个带有断言的默认情况,并且(最终)在运行时获得错误.但是我想在编译时遇到错误.
我不确定这是否可能与C++有关,但也许有人知道一个技巧......
编辑:使用-Wswitch似乎是GCC的解决方案.VS2010有类似的东西吗?(我没有使用GCC).
Edit2:好的,我找到了VC++(VS2010)的解决方案:
C4062当缺少值并且未提供默认情况时,启用警告会发出警告.
C4061即使提供了默认情况,启用警告也会在缺少值时发出警告.
最近我偶然发现了AsreyEnumerator类表格Jeffrey Richter的Power Threading Library,它似乎解决了我在编写异步内容时经常遇到的几个问题.
这个类的想法已经存在了很长一段时间了,我想知道当前版本的.NET/C#现在是否内置了对这种机制的支持,或者是否仍然需要依赖第三方库?或者也许新版本的.NET有一些替代方法可以像Richter的AsyncEnumerator那样简化异步编程?
或者换句话说:今天有没有理由不开始使用Richter的AsyncEnumerator?
编辑:
一些链接与AsyncEnumerator的信息:
我正在编写一个Asp.Net Core应用程序,该应用程序应该能够自行更新(在运行时替换自己的二进制文件).
这篇MSDN文章用经典的.Net框架描述了阴影复制,这正是我所需要的.但.Net Core中缺少整个AppDomain的东西.
所以我的问题是:
我发现了一些有关.NET Core SDK /运行时/工具版本控制困难的有趣文章,例如:
但是我仍然不知道如何在实践中处理所有这些:
哦,还有一个:
我试图摆脱代码中的一些boost依赖项,而是使用新的C++ 11特性(Visual Studio 2013).
在我的组件之一我曾经boost::mutex一起boost::lock_guard<boost::mutex>和一切工作正常.当我std::mutex一起使用时std::lock_guard<std::mutex>,我从返回时收到以下错误main().
GrabberTester.exe中0x7721E3BE(ntdll.dll)的未处理异常:0xC0000005:访问冲突读取位置0xA6A6B491.
真正的项目非常复杂,因此难以提供完整的工作代码示例来重现此问题.在我的真实项目中,互斥体用在一个在运行时加载的共享库中(但是在我返回时应该已经卸载了它main()).
我的问题是:
boost::mutex和std::mutex设计表现完全相同?std::mutex代替boost::mutex?boost::thread框架创建线程.可能std::mutex只能用于std::threads并且与boost::threads 不兼容吗?我注意到的另一件事是:当我卸载动态加载的共享库时,这需要一些时间.(DLL访问硬件,干净地关闭所有内容需要一些时间).当我切换到std::mutex它时,看起来几乎可以立即卸载DLL,但程序然后在返回时崩溃main().我的印象是问题std::mutex特别是在DLL的上下文中.
应用程序和DLL都是使用v120工具集在Debug配置中新建的,并与运行时库(/ MTd)静态链接.
下面你可以找到callstack.例外似乎来自驱动程序中的某个地方.只是偶然我发现它与我使用的互斥锁的实现有关.
ntdll.dll!7721e3be()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!7721e023()
kernel32.dll!76b014ad()
msvcr100.dll!71b0016a()
PS1080.dll!oniDriverDestroy() Line 29
OpenNI2.dll!oni::implementation::DeviceDriver::~DeviceDriver() Line 95
OpenNI2.dll!oni::implementation::Context::shutdown() Line 324
OpenNi2Grabber.dll!openni::OpenNI::shutdown() Line …Run Code Online (Sandbox Code Playgroud) 我正在尝试调用Windows API函数GetExitCodeProcess,该函数将LPDWORD第二个参数作为其第二个参数.
根据MSDN,LPDWORD是一个指向无符号32位值的指针.所以我试图传递一个uint32_t*,但编译器(MSVC 11.0)对它不满意:
错误C2664:'GetExitCodeProcess':无法将参数2从'uint32_t*'转换为'LPDWORD'
也是一个static_cast没有帮助.这是为什么?reinterpret_cast在这种情况下使用a是否安全?
c++ ×3
.net-core ×2
asp.net-core ×2
c# ×2
appdomain ×1
asp.net ×1
asp.net-4.5 ×1
asynchronous ×1
auto-update ×1
boost ×1
boost-mutex ×1
bower ×1
c++11 ×1
casting ×1
gcc ×1
gulp ×1
mutex ×1
openni ×1
pragma ×1
shadow-copy ×1
warnings ×1
winapi ×1