在SO,我搜索"识别版本视觉工作室"但未能找到答案.
场景:
一种普遍接受的最佳做法是安装与正在使用的软件相关的所有服务包.
这也适用于Visual Studio 2008.在某些情况下,它是绝对必要的,例如,如果想要安装ASP.NET MVC v1.0 RTM,则需要VS2008 SP1.
对于大多数软件,"帮助,关于____"将显示版本,通常包括SP级别.
使用我的VS2008,我收到了很多信息,其中一些很清楚:
Microsoft .NET Framework
Verson 3.5 SP1
其中一些不太清楚:
Microsoft Visual Studio 2008
版本9.0.30279.1 SP
问题是很难判断VS2008 SP1是否实际安装过.
相同的信息似乎显示在具有vs2008 SP1的计算机上的"帮助","关于"以及尚未升级的计算机上.
同样,不同的版本,例如"开发"和"专业"通过"帮助","关于"显示相同的结果.
-
问题:如何正确识别她/他的vs2008版本级别?
.NET Framework,CLR和Visual Studio版本号如何相互关联?
我希望微软能够让这更容易.
@nos ...您的QFE是一个修补程序... http://en.wikipedia.org/wiki/QFE.
AFAIK,您可能已经应用了安全补丁.
我猜测9.0.30279.nnnn的"30279"部分表示SP1,"nnnn"是后续更新级别.
更多信息
我发现的挑战是轻松识别版本.
虽然这可能看起来很奇怪,但不幸的是
我缺少时间机器,至少有一次我确定
我已经拥有vs 2008 SP1但ASP.NET MVC无法安装.
那时我应用了MS SP1升级;
执行时,升级说它正在升级SP1!
将SP1升级到自身后,ASP.NET MVC确实安装了.
因此,我觉得这很混乱.
如果微软通过"帮助","关于","显示","
微软Visual Studio 2008
版本9.0.30279.nnnn SP1" ,那将会更加容易.
http://blogs.msdn.com/bharry/archive/2008/04/19/a-new-home-for-visual-studio-hotfixes.aspx
目前有169个hotix:
http://code.msdn.microsoft .com/Project/ProjectDirectory.aspx?TagName =修补程序
中至少有两个修复程序适用于vs2008 sp1:
http:
//code.msdn.microsoft.com/KB957912 :"KB957912 - …
我看到此链接使用Google Chart API将多个折线图放在一起
在底线上有日期的建议方法是什么,因为图表中的每一行似乎都具有相同级别的空间,因此,如果我有图表,它们是日期和值,则我希望日期值之间有正确的间隔( 1天的差异应与1个月的数据点不同)。
好像您将日期放在第一列中一样,它使每个“行”在水平方向上保持相同的距离。
编辑:我已经在下面添加了我的代码
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'Target');
data.addColumn('number', 'Actual');
data.addRows(9);
data.setValue(0, 0, new Date(2010, 1, 1));
data.setValue(0, 1, 215);
data.setValue(0, 2, 215);
data.setValue(1, 0, new Date(2010, 2, 1));
data.setValue(1, 2, 213);
data.setValue(2, 0, new Date(2010, 2, 4));
data.setValue(2, 2, 213);
data.setValue(3, 0, new Date(2010, 2, 8));
data.setValue(3, 2, 213);
data.setValue(4, 0, new Date(2010, 3, 1));
data.setValue(4, 2, 220);
data.setValue(5, 0, new Date(2010, 4, 1));
data.setValue(5, …Run Code Online (Sandbox Code Playgroud) 情况:
我正在用C编写一个维护许多线程的程序.一旦线程结束,就会创建一个新线程.
每个线程分叉 - 子进程通过exec()运行进程,父进程等待它完成.
此外,还有一个等待信号的信号处理程序线程.如果检测到SIGINT,则它告诉主线程停止创建线程,以便最终所有线程结束并且程序可以退出.
信号在所有线程中被阻止,当然除了信号处理程序线程.
目标:
我希望能够通过发送SIGTERM来终止程序.这可以通过停止主线程创建新线程并终止线程创建的运行进程来实现.
问题:
如果信号在所有线程中被阻止,我如何向正在运行的进程发送信号以终止它们?
是否有某种方法可以使衍生过程仅接收从主程序发送的信号而不是发送到主程序的信号?
前段时间我查看了Haskell文档,发现它的功能组合运算符非常好.所以我实现了这个小装饰:
from functools import partial
class _compfunc(partial):
def __lshift__(self, y):
f = lambda *args, **kwargs: self.func(y(*args, **kwargs))
return _compfunc(f)
def __rshift__(self, y):
f = lambda *args, **kwargs: y(self.func(*args, **kwargs))
return _compfunc(f)
def composable(f):
return _compfunc(f)
@composable
def f1(x):
return x * 2
@composable
def f2(x):
return x + 3
@composable
def f3(x):
return (-1) * x
@composable
def f4(a):
return a + [0]
print (f1 >> f2 >> f3)(3) #-9
print (f4 >> f1)([1, 2]) #[1, 2, 0, 1, 2, …Run Code Online (Sandbox Code Playgroud) 当我正在编辑的行位于屏幕的底部时非常不方便.因为您无法看到任何后续行,并且无法对当前行后面的文件内容进行任何"眼睛引用".
所以我的问题是有一个vim命令可以刷新显示并将当前行编辑到屏幕顶部?提前致谢.
有没有更简单的方式写这个:
map.old_site_cusom_packages '/customs_packages_options.html', :controller => :public, :action => :redirect_to_home
map.old_corporate '/corporate.html', :controller => :public, :action => :redirect_to_home
map.old_track '/track.html', :controller => :public, :action => :redirect_to_home
map.old_links '/links.html', :controller => :public, :action => :redirect_to_home
map.old_contact '/contact.html', :controller => :public, :action => :redirect_to_home
Run Code Online (Sandbox Code Playgroud)
我想在一个控制器上向一个动作发送许多命名路由,我确保从旧站点遗留的URL重定向到正确的页面.
干杯.
我有第三方源代码,我必须调查.我想知道调用函数的顺序,但我不想浪费时间输入:
printf("Entered into %s", __FUNCTION__)
Run Code Online (Sandbox Code Playgroud)
和
printf("Exited from %s", __FUNCTION__)
Run Code Online (Sandbox Code Playgroud)
对于每个功能,我也不想触摸任何源文件.
你有什么建议吗?是否有一个编译器标志可以自动为我执行此操作?
澄清评论:
编辑:我发现gdb提示符中的'frame'命令在那个时间点打印当前帧(或者,你可以说是函数名).也许,每次调用函数时,都可以(使用gdb脚本)调用'frame'命令.你怎么看?
我有一个疑问,有时我将此转换DataTable为List<T>:
List<EDog> lstDogs = (from drRow in dsDogs.Tables[0].AsEnumerable()
select new EDog()
{
intIdDog = drRow.Field<int>("IdDog"),
intIdOwner = drRow.Field<int?>("IdOwner"),
intAge = drRow.Field<int>("Age"),
strName = drRow.Field<string>("Name")
}).ToList();
Run Code Online (Sandbox Code Playgroud)
这工作正常,但现在我正在考虑将它做为通用,以便任何类型的DataSet都可以转换为强类型列表.
我怎么能把它变成通用的呢?也许围绕这部分并创建对象的代表?
new EDog()
{
intIdDog = drRow.Field<int>("IdDog"),
intIdOwner = drRow.Field<int?>("IdOwner"),
intAge = drRow.Field<int>("Age"),
strName = drRow.Field<string>("Name")
}
Run Code Online (Sandbox Code Playgroud)
我试了但是得到了一个错误:
select (lambda) expected....
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
我之所以需要这个,是因为结果的每个DataRow都需要转换为Entity以便更好地操作.
我已经在PDO系统周围创建了一个具有额外功能的数据库包装器(是的,我知道包装器的包装器,但它只是带有一些额外功能的PDO).但我注意到了一个问题.
下面的内容并不像它应该的那样:
<?php
var_dump($db->beginTransaction());
$db->query('
INSERT INTO test
(data) VALUES (?)
;',
array(
'Foo'
)
);
print_r($db->query('
SELECT *
FROM test
;'
)->fetchAll());
var_dump($db->rollBack());
print_r($db->query('
SELECT *
FROM test
;'
)->fetchAll());
?>
Run Code Online (Sandbox Code Playgroud)
var_dump显示beginTransaction和rollBack函数返回true,因此没有错误.
我希望第一个print_r调用显示N个项目的数组,第二个调用显示N-1个项目.但事实并非如此,它们都显示相同数量的项目.
我的$ db->查询(<sql>,<values>)只调用$ pdo-> prepare(<sql>) - > execute(<values>)(带有额外的错误处理).
所以我认为或MySQL的交易系统不起作用,或PDO的实现不起作用或我看错了.
有谁知道问题是什么?
我想更改字体类型和大小UITableView.例如,我如何将其设置为Tahoma?