我有.NET程序,由于某些原因(从Excel 2010模板项目创建的Excel文件)无法从Visual Studio运行,我需要调试启动事件.
如果我想调试程序初始化后出现的事件,则没有问题.我从资源管理器运行该程序,将该过程附加到Visual Studio并在代码中添加一些断点.但在这里,我需要在启动事件上加上断点.我需要能够将进程附加到Visual Studio,不依赖于PID,而是依赖于特定的进程名称或任何其他可行的解决方案.
当然Thread.Sleep(1000)在我的启动事件中添加一个让我有时间在Visual Studio中附加进程是不可能的!
我有一个非常简单的问题,我无法将一个简单的布尔值转换为 TypeScript中的字符串值.
我一直漫游文档,我找不到任何有用的东西,当然我试图使用该toString()方法,但它似乎没有在bool上实现.
编辑:我几乎没有JavaScript知识,并且使用C#/ Java背景来到TypeScript.
在某些情况下,比如MVVM视图模型,我有时需要私有setter,因为视图模型公开了一个只能在内部修改的状态.
那么在接口上需要私有的setter是错误的吗?(我的意思不是特别在所描述的场景中)如果没有,为什么C#编译器不允许它?
谢谢.
我实际上正致力于框架开发,这意味着需要一个非常强大的编码方法.
我遇到一个问题,我不知道我需要抛出哪个System.Exception派生类.基本上就是这种情况,当我有一个类,其中的字段可以由构造函数初始化,并且具有使用这些字段的方法.如果用户没有初始化这些字段,我必须抛出哪个例外?(这意味着它们为空)
这是一个例子:
public class MyConnection
{
private Uri endpointUri;
public Uri EndpointUri
{
get
{
return this.endpointUri;
}
set
{
this.endpointUri = value;
}
}
public MyConnection()
{
}
public MyConnection(Uri endpointUri)
{
this.endpointUri = endpointUri;
}
public FileStream GetFile()
{
if (this.endpointUri != null)
{
// My doer methods
}
else
{
throw new TheExceptionINeedToThrow("endpointUri", ...);
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我一直在阅读有关异常处理和抛出的整个"框架设计指南"章节,并且我没有找到适合这种情况的任何解决方案.或许我误解了一些事情......
谢谢你的帮助.
编辑:我提供一个空构造函数的事实似乎有点混乱我的问题,但它是完全自愿的.在一些必须符合一系列不能在多个对象中复制的不同状态的对象中,它有时是有用的.
我意识到当使用与EventTrigger关联的InvokeCommandAcction时,原始事件仍然会路由到父元素,直到它被处理.好吧,我想这是一种预期的行为.但我的问题是如何将事件标记为Handled,以便它不会在整个UI树中传播?
实际上,当您在命令中处理此事件时,所有内容都将在此命令中处理,因此不需要传播.在我发现的一个案例中,它会导致一些不必要的行为.例如,当用户双击元素(MouseDoubleClick事件)时,我打开一个新窗口.问题是新窗口打开然后主窗口返回到新窗口的前面,因为MouseDoubleClick事件刚刚到达UI树中的顶部元素.想要的行为是保持新窗口在前面,但是当InvokeCommandAction让事件向上传播时,主窗口会收回焦点......
我可以做的是使用CallMethodAction资产,但因为我在MVVM场景中,我不想在我的代码中使用UI事件参数.即使这会让我隐含地将事件标记为已处理并解决问题.
<UserControl x:Class="..."
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding Path=DisplayReportCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
...
</UserControl>
Run Code Online (Sandbox Code Playgroud) 我一直在研究一个包含150多个表的大型ETL项目,在设计过程中,我必须对目标列名和几个表的数据类型进行重大更改.
我的问题是我无法让SSIS看到我更改的表的新架构.所以我想知道如何让SSIS刷新这个架构?我发现没有办法告诉SSIS更新数据库模式中的元数据,尤其是数据库迁移,这有点荒谬.
从头开始重新创建项目是不可能的,因为我已经花了几个小时.手动更改我更改的400多列也不是一个选项.
我有一个C语言的库.是否可以在C sharp中使用它.
http://zbar.sourceforge.net/ 是我想要使用的库的链接
上下文
我在GAC,版本1.0和版本2.0中安装了2个不同版本的程序集.我创建了一个引用1.0作为特定版本的应用程序.
问题
当我运行我的应用程序时,它将始终加载版本2.0,而应用程序专门引用版本1.0.
题
为什么会这样?如何强制我的应用程序加载已编译的版本?
它似乎没有我,这有什么用结合重定向我的应用程序甚至不知道的2.0版本时,我建立了它,并且参考"特定版本"元数据设置为true.
谢谢.
编辑:
我引用的程序集实际上是来自ODAC程序包的Oracle.DataAccess.我注意到其他名为Policy.x.xxx.Oracle.DataAccess的程序集在GAC中发布.
编辑2:
在查看Oracle.DataAccess策略后,我找到了定义绑定重定向的配置:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<bindingRedirect oldVersion="4.112.0.0-4.112.3.0" newVersion="4.112.3.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
即使我将反向绑定重定向添加到我的应用程序配置中,GAC中的策略似乎也具有优先级.我找到了一篇MSDN文章来处理这个主题并建议忽略这个配置的策略:
<publisherPolicy apply="no" />
Run Code Online (Sandbox Code Playgroud)
但它仍然无效......
编辑3:
我尝试从GAC中删除该策略并重新启动我的计算机.它终于奏效了.它不像一个舒适的解决方案开发,但这个政策确实打破了我的一个应用程序,这意味着在我的情况下禁用该策略是正确的事情.
最终编辑:
伊戈尔给了我正确的答案.我只需要使用publisherPolicy右侧配置部分中的设置来解决这些策略:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<publisherPolicy apply="no"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud) 在新的.NET Framework 4.5中使用反射时,我遇到了一个奇怪的行为,我发现这是非常意外的.命名空间System.Reflection为利用Type对象提供了一些新的扩展方法.其中两个是GetRuntimeProperty(字符串名称)和GetRuntimeProperties().
现在假设你有一个带有内部属性的简单对象.
public class ObjectBase
{
protected int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而你现在尝试利用这种类型.
var properties = typeof(ObjectBase).GetRuntimeProperties();
// properties.Count = 2
var idProperty = typeof(ObjectBase).GetRuntimeProperty("Id");
var nameProperty = typeof(ObjectBase).GetRuntimeProperty("Name");
// idProperty = null
// nameProperty = System.String Name
Run Code Online (Sandbox Code Playgroud)
正如所料,该properties对象包含Id和Name属性定义的两个属性定义,而nameProperty保存Name属性定义.没想到的是idProperty对象为null ...
来自.NET Framework,我想这是微软架构师的意图,但我必须说这似乎不是你真正希望发生的事情.我相信这些类似的方法应该表现相同,但似乎GetRuntimeProperty过滤公共属性,其中GetRuntimeProperties不应用任何过滤器.
有没有人有合理的解释为什么微软决定那些类似的方法应该有不同的行为?设计错误?
谢谢.
我一个月前安装了Windows 8,现在想将xna game studio 4.0添加到我的visual studio 2010终极版中.我从http://www.microsoft.com/en-us/download/details.aspx?id=23714下载了xna安装程序并运行了安装程序.首先,它说了一些兼容性问题,但设置仍在继续.完成后我重新启动计算机并想制作一个xna项目,但它没有显示在c#下拉菜单中.所以我看了%programm文件(x86)%/ Microsoft viual studio 10.0/Common 7/IDE/extensions/Microsoft,但是没有xna文件夹.我做错了什么或者Windows 8与vs2010和xna 4.0有什么问题?