小编chi*_*oro的帖子

当程序集丢失时,.NET应用程序无法启动

我有一个.NET C#winforms应用程序,它在我的机器上运行良好,但如果我尝试在另一台机器上运行它,它就无法启动.没有错误消息,没有崩溃消息,没有窗口 - 没有.

我发现这总是在缺少引用的程序集时发生.我想这是.NET的一般行为而不是我的应用程序特有的,是吗?

有没有办法配置.NET或我的应用程序,以便它在这种情况下吐出"引用的程序集丢失",如错误消息?

.net c# reference winforms

5
推荐指数
1
解决办法
3719
查看次数

SharePoint:您无法授予有限的访问权限级别

我的团队实现了一个UI,用于为特定SharePoint列表上的用户分配/撤消权限级别.UI提供" 撤消 "功能,以恢复用户在通过UI更改之前的权限.

现在,如果用户具有" 受限访问 "权限级别,则会出现问题:当您对UI进行更改时,将删除此权限级别.尝试撤消时,应再次添加权限级别,这将导致a

您无法授予用户有限的访问权限级别.

当用户访问站点下的某个实体时,SharePoint会自动授予该权限级别.它无法手动授予.然后,该站点中的所有列表都会继承此权限级别.但是,在打破列表上的继承之后,我可以手动撤销权限,但是,之后我无法重新授予它.

因此,SharePoint特别对待该权限级别,我想知道如何在我们的撤消功能中解决这个问题.

我的问题:

  • 我是否认为这种"有限访问"仅由SharePoint在网站级别授予,并且下面的所有列表仅通过继承意外地包含该内容?
  • 该权限级别是否对列表有任何影响,或者它是否仅适用于站点本身?
  • 那么,只是将它从列表中删除并且当用户点击"撤消"时不再添加它,是否可以保存,因为它无论如何都没有效果?

security permissions sharepoint roles

5
推荐指数
1
解决办法
2万
查看次数

VBA 中的 VSTO:AddIn.Object 有时不返回任何内容(空)

鉴于:

  • VSTO 插件
  • Anoverride object RequestComAddInAutomationService()返回Facade在我的场景中调用的类的实例。
  • Excel 2007 中的 VBA 宏,它访问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)

c# vba vsto excel-2007 .net-3.5

5
推荐指数
1
解决办法
3750
查看次数

如何在网络驱动器上设置File.Create方法的超时?

我在我的应用程序中有一个要求,我需要在网络驱动器中创建文件,但是如果网络断开应用程序挂起一段时间并抛出异常,则在progess中创建文件.

我们有什么方法可以设置超时File.Create吗?

c# io file networkstream

5
推荐指数
1
解决办法
1022
查看次数

为什么JSON应该有status属性

我偶然发现了一种我发现非常普遍的做法.我甚至找到了一个给这个名字命名的网页,但我忘了这个名字,而且我再也找不到谷歌那个页面了.

实践是来自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状态代码,浏览器将"免费"执行重定向,从而正确维护浏览历史记录.

我想主要提出两个可能的答案:

  • 要么是有两个争吵社区,每个社区都有自己喜欢的方法(使用HTTP状态总是与使用HTTP状态永远不会)
  • 或者我错过了一个重点,你会告诉我虽然在某些情况下应该使用HTTP状态,但是在某些特定情况下,HTTP状态不适合并且"status"JSON属性发挥作用.

rest json

5
推荐指数
2
解决办法
458
查看次数

IIS Express 8需要几分钟才能提供文件

我有一个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分钟加载我们的网络应用程序页面.

iis-express visual-studio-2012

5
推荐指数
0
解决办法
440
查看次数

Resharper忽略使用分析的单元测试

Resharper最有用的代码分析工具之一是,如果在解决方案中找不到用法,则将符号标记为未使用.

不幸的是,单元测试所涵盖的任何符号都被视为已使用.

=> 我正在寻找一种忽略此用法分析的单元测试的方法.

通过Resharper选项扫描,我找到了一个标有"编辑要跳过的项目"的按钮.它有一个很长的描述文本,除其他外,"...如果解决方案中的某个符号仅用于您跳过的文件中,则此符号将突出显示为从未使用过."

这听起来就像我想要的那样.但是通过将单元测试项目放在跳过列表上不仅可以显示任何有效的未使用符号,它只会禁用测试项目的整个代码分析.当然我仍然希望编写好的单元测试代码,从而利用Resharper的所有代码分析功能.我只是不想计算测试项目之外的符号用法.

有任何想法吗?

c# resharper nunit code-analysis resharper-7.1

5
推荐指数
1
解决办法
506
查看次数

C#中的线程安全异步代码

几个星期前我问了下面的问题.现在,在回顾我的问题和所有答案时,一个非常重要的细节跳进了我的眼睛:在我的第二个代码示例中,是不是DoTheCodeThatNeedsToRunAsynchronously()在主(UI)线程中执行?计时器只是等待一秒钟,然后将事件发布到主线程?这意味着那些需要异步运行的代码根本不是异步运行的?!

原始问题:


我最近遇到过多次问题并以不同的方式解决它,总是不确定它是否是线程安全的:我需要异步执行一段C#代码.(编辑:我忘了提到我使用的是.NET 3.5!)

这段代码适用于主线程代码提供的对象.(编辑:我们假设该对象本身就是线程安全的.)我将向您介绍我尝试过的两种方法(简化)并提出以下四个问题:

  1. 实现我想要的最好方法是什么?它是两种或另一种方法之一吗?
  2. 两种方式中的一种不是线程安全的(我担心两者......)以及为什么?
  3. 第一种方法创建一个线程并将其传递给构造函数中的对象.这是我应该如何传递对象?
  4. 第二种方法使用一个不提供这种可能性的计时器,所以我只使用匿名委托中的局部变量.这是安全还是理论上可以在变量中的引用在委托代码评估之前发生变化?(每当使用匿名代表时,这是一个非常通用的问题).在Java中,您必须将局部变量声明为final(即一旦分配就不能更改).在C#中没有这种可能性,有吗?

方法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# multithreading timer thread-safety .net-3.5

4
推荐指数
1
解决办法
4641
查看次数

Visual Studio在Exception上完成应用程序

我在C#应用程序中有一些地方没有捕获潜在的异常,但是在异常情况下崩溃之前有一个try-finally块来释放资源.

当我在Visual Studio中运行代码并发生异常时,它会在相应的行中断,将其标记为黄色并描述异常.

没关系.

但在注意到并读取异常之后,我希望我的应用程序能够保存(执行finally块).这正是我在Visual Studio外部运行代码时会发生的情况.然而,当我按F5继续时,它会卡在那条线上,一遍又一遍地标记它.

我该怎么做才能告诉Visual Studio我希望应用程序继续=失败?

c# debugging exception visual-studio-2008 visual-studio

3
推荐指数
1
解决办法
281
查看次数

什么是 C# 中的透明类或透明方法?`

我有 C# 代码,当我针对它运行 FXCop 时,它产生了一个奇怪的错误,我试图理解但我不能理解。错误说

透明方法不能满足链接需求。

这里我不明白的是什么是透明方法?在通过 MSDN 帮助时,我遇到了一个称为透明类的术语。

谁能解释一下透明类透明方法是什么意思?

c# fxcop

3
推荐指数
1
解决办法
684
查看次数