我有一个.NET C#winforms应用程序,它在我的机器上运行良好,但如果我尝试在另一台机器上运行它,它就无法启动.没有错误消息,没有崩溃消息,没有窗口 - 没有.
我发现这总是在缺少引用的程序集时发生.我想这是.NET的一般行为而不是我的应用程序特有的,是吗?
有没有办法配置.NET或我的应用程序,以便它在这种情况下吐出"引用的程序集丢失",如错误消息?
我的团队实现了一个UI,用于为特定SharePoint列表上的用户分配/撤消权限级别.UI提供" 撤消 "功能,以恢复用户在通过UI更改之前的权限.
现在,如果用户具有" 受限访问 "权限级别,则会出现问题:当您对UI进行更改时,将删除此权限级别.尝试撤消时,应再次添加权限级别,这将导致a
您无法授予用户有限的访问权限级别.
当用户访问站点下的某个实体时,SharePoint会自动授予该权限级别.它无法手动授予.然后,该站点中的所有列表都会继承此权限级别.但是,在打破列表上的继承之后,我可以手动撤销权限,但是,之后我无法重新授予它.
因此,SharePoint特别对待该权限级别,我想知道如何在我们的撤消功能中解决这个问题.
我的问题:
鉴于:
override object RequestComAddInAutomationService()返回Facade在我的场景中调用的类的实例。AddIn.Object以获取 Facade 并使用它。更新:原来是特定用户有问题。她一直都有,别人从来没有(?永远不要说“从不”)
在这“几次”中,我得到
错误:对象变量或未设置块变量
在试图访问Facade. 简而言之,我可以告诉您,其中的代码RequestComAddInAutomationService()没有任何容易出错的魔法,而且用于访问加载项的 VBA 代码也取自网络,看起来也不错。更长的版本尚未推出,对于那些花时间阅读它的人:-)
问题:有没有人知道为什么会发生这种情况?是Excel问题吗?
承诺的细节:
我的插件.cs:
public partial class MyAddIn
{
public Facade Facade { get; private set; }
protected override object RequestComAddInAutomationService()
{
if (this.Facade == null)
this.Facade = new Facade(Controller.Instance);
return this.Facade;
}
}
Run Code Online (Sandbox Code Playgroud)
Facade.cs:
[ComVisible(true)]
[Guid("1972781C-A71A-48cd-9675-AE47EACE95E8")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IFacade
{
// some methods
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中有一个要求,我需要在网络驱动器中创建文件,但是如果网络断开应用程序挂起一段时间并抛出异常,则在progess中创建文件.
我们有什么方法可以设置超时File.Create吗?
我偶然发现了一种我发现非常普遍的做法.我甚至找到了一个给这个名字命名的网页,但我忘了这个名字,而且我再也找不到谷歌那个页面了.
实践是来自REST服务的每个JSON响应都应具有以下结构:
{
"status": "ok",
"data": { ... }
}
Run Code Online (Sandbox Code Playgroud)
或者在错误的情况下:
{
"status": "error",
"message": "Something went wrong"
}
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么在JSON中需要这样的"状态"属性是什么意思?在我看来,这是为HTTP状态代码制作的.
REST使用客户端和服务器之间的HTTP通信方式,例如,应使用"DELETE"动词进行删除.同样,如果找不到资源,则应使用404等.因此,如果符合这种思路,任何错误情况都应在HTTP状态中正确编码.
是否有特定原因在错误情况下返回HTTP 200状态代码并在JSON中出现错误?它似乎只是在处理响应时使javascript条件分支更复杂.
我发现了一些状态可以"重定向"以告诉应用程序重定向到某个URL的情况.但是如果使用了正确的HTTP状态代码,浏览器将"免费"执行重定向,从而正确维护浏览历史记录.
我想主要提出两个可能的答案:
我有一个ASP.NET MVC 3项目,我在调试时运行在IIS Express上.几天前,当我安装VS2012时,IIS Express突然开始花费很长时间来服务每个文件(JS文件,CSS文件).我们的观点有大约十几个JS文件.浏览器中的强制刷新(Ctrl + F5)会使其等待4分钟,直到页面完全加载.在开发人员工具中,我可以看到有进展,但每个文件在收到之前需要花费很多秒.
似乎VS2012安装了IIS Express 8.我之前有7.5.此性能问题是IIS Express 8的已知问题吗?到目前为止,我的谷歌搜索还没有成功.有人知道任何与之相关的事吗?
更新:我可以通过卸载8,删除MyDocuments\IISExpress目录并安装7.5来确认,我可以解决此问题.我的一位同事遇到了同样的问题:安装VS2012后,升级了他的IIS Express安装,他花了4分钟加载我们的网络应用程序页面.
Resharper最有用的代码分析工具之一是,如果在解决方案中找不到用法,则将符号标记为未使用.
不幸的是,单元测试所涵盖的任何符号都被视为已使用.
=> 我正在寻找一种忽略此用法分析的单元测试的方法.
通过Resharper选项扫描,我找到了一个标有"编辑要跳过的项目"的按钮.它有一个很长的描述文本,除其他外,"...如果解决方案中的某个符号仅用于您跳过的文件中,则此符号将突出显示为从未使用过."
这听起来就像我想要的那样.但是通过将单元测试项目放在跳过列表上不仅可以显示任何有效的未使用符号,它只会禁用测试项目的整个代码分析.当然我仍然希望编写好的单元测试代码,从而利用Resharper的所有代码分析功能.我只是不想计算测试项目之外的符号用法.
有任何想法吗?
几个星期前我问了下面的问题.现在,在回顾我的问题和所有答案时,一个非常重要的细节跳进了我的眼睛:在我的第二个代码示例中,是不是DoTheCodeThatNeedsToRunAsynchronously()在主(UI)线程中执行?计时器只是等待一秒钟,然后将事件发布到主线程?这意味着那些需要异步运行的代码根本不是异步运行的?!
原始问题:
我最近遇到过多次问题并以不同的方式解决它,总是不确定它是否是线程安全的:我需要异步执行一段C#代码.(编辑:我忘了提到我使用的是.NET 3.5!)
这段代码适用于主线程代码提供的对象.(编辑:我们假设该对象本身就是线程安全的.)我将向您介绍我尝试过的两种方法(简化)并提出以下四个问题:
方法1:线程
new Thread(new ParameterizedThreadStart(
delegate(object parameter)
{
Thread.Sleep(1000); // wait a second (for a specific reason)
MyObject myObject = (MyObject)parameter;
DoTheCodeThatNeedsToRunAsynchronously();
myObject.ChangeSomeProperty();
})).Start(this.MyObject);
Run Code Online (Sandbox Code Playgroud)
这种方法有一个问题:我的主线程可能崩溃,但由于僵尸线程,进程仍然存在于内存中.
方法2:定时器
MyObject myObject = this.MyObject;
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.AutoReset = false; // i.e. only run the timer once.
timer.Elapsed += new System.Timers.ElapsedEventHandler(
delegate(object sender, System.Timers.ElapsedEventArgs e)
{
DoTheCodeThatNeedsToRunAsynchronously(); …Run Code Online (Sandbox Code Playgroud) 我在C#应用程序中有一些地方没有捕获潜在的异常,但是在异常情况下崩溃之前有一个try-finally块来释放资源.
当我在Visual Studio中运行代码并发生异常时,它会在相应的行中断,将其标记为黄色并描述异常.
没关系.
但在注意到并读取异常之后,我希望我的应用程序能够保存(执行finally块).这正是我在Visual Studio外部运行代码时会发生的情况.然而,当我按F5继续时,它会卡在那条线上,一遍又一遍地标记它.
我该怎么做才能告诉Visual Studio我希望应用程序继续=失败?
我有 C# 代码,当我针对它运行 FXCop 时,它产生了一个奇怪的错误,我试图理解但我不能理解。错误说
透明方法不能满足链接需求。
这里我不明白的是什么是透明方法?在通过 MSDN 帮助时,我遇到了一个称为透明类的术语。
谁能解释一下透明类或透明方法是什么意思?