我一直在寻找一种在函数内发生不可恢复的错误时终止PowerShell(PS1)脚本的方法.例如:
function foo() {
# Do stuff that causes an error
$host.Exit()
}
Run Code Online (Sandbox Code Playgroud)
当然没有这样的事情$host.Exit().有$host.SetShouldExit(),但这实际上关闭了控制台窗口,这不是我想要的.我需要的是与Python相同的东西sys.exit(),只需停止执行当前脚本而不需要进一步的操作.
编辑:是的,它只是exit.咄.
这真让我抓狂.我有一个来自多个脚本的库,它包含以下功能:
function lib_open_dataset([string] $sql) {
$ds = new-object "System.Data.DataSet"
$da = new-object "System.Data.SqlClient.SqlDataAdapter" ($sql, $_conn_string)
$record_count = $da.Fill($ds)
return $ds
}
Run Code Online (Sandbox Code Playgroud)
这几乎被称为无处不在,它工作得很好,除了我通常必须这样做:
$ds = lib_open_dataset($some_sql)
$table = $ds.Tables[0]
foreach ($row in $table.Rows) {
# etc
}
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个新的简单包装函数,以避免解除引用第一个表的额外步骤:
function lib_open_table([string] $sql) {
$ds = lib_open_dataset $sql
return $ds.Tables[0]
}
Run Code Online (Sandbox Code Playgroud)
问题是,从这里返回的是由于某种原因而不是表本身的表的Rows集合.这会导致上面写的行循环失败并显示"无法索引到空数组".例外.经过多次试验和错误,我发现这是有效的:foreach
foreach ($row in $table) {
# etc
}
Run Code Online (Sandbox Code Playgroud)
需要注意的区别$table.Rows,只是$table在foreach声明.这有效.因为$table实际上指向Rows集合.如果声明
return $ds.Tables[0]
Run Code Online (Sandbox Code Playgroud)
假设是正确的,为什么函数返回表对象的子集合而不是表本身?
我猜测Powershell功能的工作原理显然会引起这种情况,但我无法弄清楚是什么.
我在C#中遇到问题,输出状态:
Error 1 Static class 'WindowsFormsApplication1.Hello2'
cannot derive from type 'System.Windows.Forms.Form'. Static classes
must derive from object.
Run Code Online (Sandbox Code Playgroud)
我怎么能纠正这个?
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Hello2.calculate();
}
}
public class Hello : Form
{
public string test { get; set; }
}
public static class Hello2 : Form
{
public static void calculate()
{
Process.Start("test.exe");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个相当大的ASP应用程序,它将完全本地化.我resx在卫星装配中使用标准的命名方法,具有后备(即es-MX,es-CL和后备共同es等等).
不仅可能有数百个(如果不是一千个或更多!)不同的字符串; 在某些地方,需要存储为资源的文本量可能很长,只需几段.
我猜测在Visual Studio编辑器中管理这些字符串将是一种巨大的痛苦,更不用说将要做一些翻译的人首先无法访问VS.
那些在本地化应用上工作的人如何管理这类事情?任何建议和指示将不胜感激.
我总是从存储过程中完成事务,但现在我需要在事务中包含一堆从代码执行的"动态"语句sp_executesql.
具体来说READ UNCOMMITED,在某些情况下我需要隔离级别(我知道那是做什么的,是的,这就是我需要的).这是SQL2008.
我的问题是:如果我使用BeginTransaction()我的SqlConnection实例的方法,隔离级别设置为IsolationLevel.ReadUncommitted将具有与执行具有该READ UNCOMMITED语句的存储过程相同的效果?
我有一个动态类型
var f = context.ExecuteStoreQuery<dynamic>("CALL iv_sp_computersbyday();
Run Code Online (Sandbox Code Playgroud)
我怎么能现在什么属性有动态tuype返回??? 我不能通过对动态的反思来访问.
我想在jqgrid中有两个视图:
1)带有可排列列,分页等的常规网格视图(这很棒,效果很好......喜欢它!).
2)"打印视图",可以使用css轻松设置样式并为打印定制.类结构不应该太复杂,因为我想轻松制作自己的样式表.一个重要的事情是能够在每个打印页面上重复列标题.(我不喜欢从jqgrid打印.即使我使用"media = print"添加jqgrid样式表,打印结果也很难控制.)
所以,我做的是首先创建一个jqGrid.然后,使用它的数据,创建我自己的表并从中打印.这有点像黑客.但它的确有效.
1-创建网格并将其插入div.注意我根据变量的存在在"loadComplete"函数中调用了"build_print_view".这允许我控制我是否要首先显示"打印视图"或"网格视图":
function classGrid(select_val, showgrid){
jQuery.get('/lookupgrid/lookupgrid/get_grid', function(data) {
var _html= jQuery(data);
jQuery('#resultdiv').html(_html);
var gridtable = jQuery("#list");
var formdata = new Array();
formdata.push({
name: "var1",
value: "whatever"
});
formdata.push({
name: "var2",
value: "whateverelse"
});
var lastsel;
console_log("in classGrid");
gridtable.jqGrid({
url:'/lookupgrid/lookupgrid/class_grid',
colNames:['var1','var2'],
colModel :[
{
name:'var1',
index:'var1',
width:95
},
{
name:'var2',
index:'var2',
width:95
}],
datatype: 'json',
mtype: 'POST',
pager: '#pager',
rowList:[10,20,30],
loadComplete: function() {
if(!showgrid){
build_print_view();
}
},
onSelectRow: function(id){
var rowdata = gridtable.jqGrid('getRowData',id);
alert('Selected row ID …Run Code Online (Sandbox Code Playgroud) 我想在我的Web.config中创建一个connectionString,然后在所有模块声明的"provider connection string"属性中重用它.
示例:以这种方式声明连接字符串:
<add name="MyConnectionString" connectionString="Data Source=.;Initial
Catalog=MyDB;User ID=username;Password=pwd;" />
Run Code Online (Sandbox Code Playgroud)
然后在模块之间共享此连接:
<add name="Module1Context" connectionString="metadata=res//*/Module1.csdl| ... |
...;provider=System.Data.SqlClient;provider connection string=MyConnectionString"
providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
这可能吗?
有没有人让T4MVC作为构建脚本的一部分运行?最好是NAnt构建脚本.
我不想检查生成的文件,只是让构建服务器创建它们作为构建的一部分,但T4MVC只能在Visual Studio中运行.
我试过了:
有没有人成功找到工作的解决方案?
您好C#编程新手.
我一直试图以这种方式投射:
m_GameBoard = new Board((short)i_array[1]); // (i_array is defined as object[] i_array)
Run Code Online (Sandbox Code Playgroud)
编译器没有说什么,但在运行时遇到以下崩溃:
System.InvalidCastException未处理 Message = Association指定无效.Source = B11 Ex02 StackTrace:ב-B11_Ex02.Game..ctor(Object [] i_array)ב-..\B11 Ex02\Game.cs:line 32ב-B11_Ex02.Program.Main()ב-\ B11 Ex02\Program .cs:line 56ב-System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly,String [] args)ב-System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)ב-Microsoft.VisualStudio.HostingProcess.HostProc. RunUsersAssembly()ב-System.Threading.ThreadHelper.ThreadStart_Context(Object state)ב-System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean ignoreSyncCtx)ב-System.Threading.ExecutionContext.Run(ExecutionContext executionContext ,ContextCallback回调,对象状态)ב-System.Threading.ThreadHelper.ThreadStart()InnerException:
非常感谢您的帮助,提前致谢
c# ×5
.net ×2
powershell ×2
.net-4.0 ×1
asp.net ×1
asp.net-mvc ×1
casting ×1
database ×1
dynamic ×1
jqgrid ×1
localization ×1
nant ×1
printing ×1
reflection ×1
resources ×1
t4mvc ×1
transactions ×1
windows ×1