是否可以在Visual Studio 2010中的JS文件中创建代码区域?
这种方法适用于2005年,但我无法在2010年开始工作.
我正在改进一个开源项目的构建,该项目目前支持.NET Framework v2.0,v3.5和现在的v4.0.到目前为止,我已经限制自己使用v2.0以确保兼容性,但是对于VS2010,我感兴趣的是拥有真正的目标版本.
我正在寻找关于如何编辑MSBuild csproj/sln以便能够为每个目标干净地生成构建的一些指导.我愿意在csproj和批处理文件中有复杂性来控制构建.
我的目标是能够拥有一个命令行脚本,可以在不需要安装Visual Studio的情况下生成构建,但只能创建必要的.NET Framework.理想情况下,我希望尽量减少对其他软件的依赖.我注意到很多人使用NAnt(例如Ninject使用NAnt 构建了许多目标),但我不确定这是否是必要的,或者他们是否更熟悉它.
我很确定这可以做到,但我很难找到关于设置和最佳实践的权威指南.
奖励:设置完成后我的下一步将是更好地支持Mono Framework.对Mono做同样事情的任何帮助都将非常感激.
如果目标框架是较新版本,那么我的项目代码可能会有一些小的地方可以大大改进.我希望能够更好地利用C#中的条件编译来根据需要切换它们.
就像是:
#if NET40
using FooXX = Foo40;
#elif NET35
using FooXX = Foo35;
#else NET20
using FooXX = Foo20;
#endif
Run Code Online (Sandbox Code Playgroud)
这些符号中的任何一个都是免费的吗?我是否需要将这些符号作为项目配置的一部分注入?看起来很容易,因为我知道哪个框架是MSBuild的目标.
/p:DefineConstants="NET40"
Run Code Online (Sandbox Code Playgroud)
更新:我的问题是人们如何处理这种情况?你在创造不同的配置吗?您是否通过命令行传递常量?
请看这个代码: -
#include<stdio.h>
int main()
{
int arr[2][2]={1,2,3,4};
printf("%d %u %u",**arr,*arr,arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我编译并执行这个程序时,我得到了arr和*arr的相同值,它是2 d数组的起始地址.例如: - 1 3214506 3214506
我的问题是为什么解除引用arr(*arr)不会打印存储在arr中包含的地址的值?
我正在构建一个安装程序,我想引导SQL Server Compact Edition 3.5 SP2.问题是我正在寻找注册表项HKLM\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU\DesktopRuntimeVersion.问题的原因是对于64位计算机,SQL CE要求运行32位和64位安装程序.在安装32位版本之前,无法安装64位版本.
一旦安装了32位版本,就会填充注册表项,并且我的引导程序dotNetInstaller会检测到注册表项是否存在,并且从未安装过x64版本.
即使安装了x32,如何判断是否安装了x64版本的任何想法?
你知道在Delphi代码中捕获,记录和重新引发异常的方法吗?一个简单的例子:
procedure TForm3.Button1Click(Sender: TObject);
begin
try
raise Exception.Create('Bum');
except
on E: Exception do
begin
MyHandleException(E);
end;
end;
end;
procedure TForm3.MyHandleException(AException: Exception);
begin
ShowMessage(AException.Message);
LogThis(AException.Message);
// raise AException; - this will access violate
end;
Run Code Online (Sandbox Code Playgroud)
所以我需要在except块中重新提升它,但我想知道是否有更好的方法来编写我自己的方法来处理和(在特定条件下)重新引发异常.
参考:http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html
"如果你的程序尝试autounbox null,它将抛出NullPointerException."
如果尝试将null赋给布尔值,javac将给出编译时错误.说得通.尽管如此,将null赋给布尔值也是如此.我猜也是有道理的.
但是让我们考虑一下这样一个事实:当你尝试autounbox null时你会得到一个NPE.这意味着你不能在没有空值检查或异常处理的情况下安全地对布尔值执行布尔运算.在整数上进行数学运算也是如此.
很长一段时间,我是java1.5 +中自动装箱的粉丝,因为我认为它让java更接近真正的面向对象.但是,昨晚遇到这个问题之后,我得说我认为这很糟糕.当我尝试使用未初始化的原语时,编译器给我一个错误是一件好事.如果我输了,我不想使用自动装箱.
我想我可能误解了自动装箱的问题,但与此同时我永远不会接受布尔值应该能够有3个值.谁有人解释这个?我没有得到什么?
基本上我做了一个控制台应用程序,执行一些需要几分钟的任务.我想让它在任务栏中闪现,让我知道它什么时候做完了.