小编Ben*_*ins的帖子

VS2010 - 如何在第一次编译错误时自动停止编译

{rant} 首先我想说这不是重复的.我之前已经问过这个问题,但是当它不是时,它会被重复关闭.这个问题是针对VS 2010的特定问题以及VS 2008中所谓的重复工作的答案,而不是VS 2010中的答案(至少不适合我或我认识的任何人).因此,在您将某些内容视为重复内容之前,请仔细阅读该问题并亲自尝试答案,看看它是否真的有效.为咆哮道歉,但没有明显的方式联系SO警察关闭问题或重新开放.{/咆哮}


在工作中,我们有一个包含80多个项目的C#解决方案.在VS 2008中,我们使用宏来在解决方案中的项目无法构建时立即停止编译(请参阅此问题以获取VS 2005和VS 2008的几个选项:首次编译错误时自动停止Visual C++ 2008构建?).

是否有可能在VS 2010中做同样的事情?我们发现在VS 2010中,宏不起作用(至少我无法使它们工作),因为看起来环境事件不会在VS 2010中触发.

默认行为是尽可能继续并在错误窗口中显示错误列表.一旦遇到错误(文件级)或项目无法构建(项目级别),我很高兴它能够立即停止.

仅限VS 2010的答案.如果宏确实有效,那么可以理解如何为VS 2010配置它们的详细说明.

谢谢.

.net c# visual-studio-2010 visual-studio

42
推荐指数
2
解决办法
5901
查看次数

使用lambda表达式与私有方法

我读了一个关于Stack Overflow问题的答案,其中包含以下建议代码:

Action<Exception> logAndEat = ex => 
{  
    // Log Error and eat it
};

try
{
    // Call to a WebService
}
catch (SoapException ex)
{
    logAndEat(ex);
}
catch (HttpException ex)
{
    logAndEat(ex);
}
catch (WebException ex)
{
    logAndEat(ex);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:对于LogAndEat使用lambda表达式而不是(在我看来更简单,更明显)私有方法的优点(如果有的话)是什么,如下所示:

private void LogAndEat(Exception ex)
{
    // Log Error and eat it
}
Run Code Online (Sandbox Code Playgroud)

编辑:感谢您的答案到目前为止,但只是更清楚地重述我的基本问题:哪种方法更好/您会在这种情况下推荐?lambda表达式还是私有方法?

.net c# lambda

18
推荐指数
3
解决办法
1927
查看次数

单身人士与终结者但不是IDisposable

这就是我对"CLR via C#","Effective C#"和其他资源的IDisposable和终结器的理解:

  • IDisposable用于确定性地清理托管和非托管资源.
  • 负责非托管资源的类(例如文件句柄)应该实现IDisposable并提供终结器以保证它们被清除,即使客户端代码没有在实例上调用Dispose().
  • 仅负责托管资源的类永远不应实现终结器.
  • 如果你有一个终结器,那么你必须实现IDisposable(这允许客户端代码做正确的事情并调用Dispose(),而终结器可以防止泄漏资源,如果他们忘记).

虽然我理解并推理上述所有内容,但有一种情况我认为打破这些规则是有意义的:负责非托管资源的单例类(例如提供对特定文件的单点访问) ).

我认为在单例上使用Dispose()方法总是错误的,因为单例实例应该在应用程序的生命周期中存在,如果任何客户端代码调用Dispose(),那么你就被填充了.但是,您需要一个终结器,以便在卸载应用程序时,终结器可以清理非托管资源.

因此,在我看来,使用没有实现IDisposable的终结器的单例类似乎是一件合理的事情,但这种类型的设计与我所理解的最佳实践相反.

这是一种合理的方法吗?如果没有,为什么不呢?有哪些优越的选择?

.net c# singleton idisposable

16
推荐指数
2
解决办法
3963
查看次数

将具有透明度的图像添加到Crystal Reports

Crystal Reports是否真的不支持具有透明度的图像?

我们在工作中使用它,而Crystal Reports的人告诉我它不支持透明度.我无法相信,所以我花了最后20分钟谷歌搜索,并认为他可能是对的.在这个时代,这似乎绝对令人难以置信.

任何人都可以确认CR是否支持透明度,如果是这样,你如何做(我们不受插入的图像类型 - png,gif等)的限制.

为了记录,我们使用的是VS 2008(10.5版)附带的CR版本.

transparency crystal-reports

14
推荐指数
2
解决办法
3万
查看次数

如何在VS 2010中的第一个错误上停止C#编译(VS 2008宏不起作用)!

新信息:
此问题已在此处重新提出,并且Noah Richards已正确回答了该问题,其解决方案适用于VS 2010.

在工作中,我们有一个包含80多个项目的C#解决方案.是否有可能在VS 2010 中遇到错误时自动停止编译而不是尽可能继续的默认行为并在错误窗口中显示错误列表?

一旦遇到错误(文件级)或项目无法构建(项目级别),我很高兴它能够立即停止.

我还注意到在VS 2008中我们使用的宏类似于下面的一些答案,但是它们在VS 2010中不起作用(至少我无法接受它们,因为环境事件似乎没有在VS中触发) 2010).

还有点相关:
如何在第一次编译错误时自动停止Visual C++构建?

c# visual-studio-2010

10
推荐指数
1
解决办法
2183
查看次数

是否可以从Visual Studio 2010创建Office 2003 VSTO加载项?

我们已经为Word 2003和Excel 2003提供了现有的VS 2008 VSTO加载项.我们目前无法升级Office版本.

我们刚刚尝试将我们的解决方案升级到VS 2010并且转换和编译很好,但是在构建和运行加载项时,我们会收到一条消息,指出未安装所需的Office版本.

有没有办法绕过这个问题(没有升级到Office 2007或2010),以便我们可以使用VS 2010来构建这个加载项?

vsto ms-office visual-studio-2010 visual-studio

10
推荐指数
1
解决办法
6580
查看次数

如何从单独的C#项目调用VSTO AddIn方法?

我有一个C#Excel加载项项目"MyExcelAddIn",它有一个公共方法Foo()来做复杂的事情.出于测试目的,加载项还定义了一个工具栏按钮,该按钮连接到Foo(),因此我可以测试它并验证单击按钮调用Foo()并执行我想要它做的事情.这可以.

现在我想从C#Windows Forms项目中调用此方法.在Windows窗体项目中,我可以创建一个Excel实例并使其可见并验证我的VSTO加载项是否正在运行,因为我可以看到该按钮并且它可以正常工作.但我无法弄清楚如何从Windows窗体项目以编程方式调用Foo().我已经google了一点,得到了"MyExcelAddIn"COMAddIn对象,但无法解决如何调用Foo().

它看起来像这样:

// Create Excel and make it visible
Application excelApp = new Application();
excelApp.Visible = true;

// I know my VSTO add-in is running because I can see my test button
// Now get a reference to my VSTO add-in
Microsoft.Office.Core.COMAddIns comAddIns = _excelApp.COMAddIns;
object addinName = "MyExcelAddIn";
Microsoft.Office.Core.COMAddIn myAddin = comAddIns.Item(ref addinName);
// This works, but now what? How do I make a call on myAddin?
// Note that myAddin.Object is null...
Run Code Online (Sandbox Code Playgroud)

所以我想知道如何从我的Windows窗体应用程序中调用Foo().请注意,我可以完全控制Windows窗体应用程序和加载项,我怀疑我必须对它们(尤其是加载项)进行更改,但我不知道如何执行此操作.

请注意,这是一个VS2008 C#应用程序,我正在使用Excel 2003.

.net c# vsto add-in visual-studio-2008

7
推荐指数
2
解决办法
6583
查看次数

VS 2010:防止在输出窗口中显示构建摘要

当您在 Visual Studio 2008 中以“安静”模式构建时,输出如下所示:

Compile complete -- 0 errors, 0 warnings
------ Build started: Project: JLTA.JBS.UI.Office.VSTODocument, Configuration: Debug Any CPU ------
------ Build started: Project: JLTA.JBS.UI.Office.VSTOWorkbook, Configuration: Debug Any CPU ------
------ Build started: Project: JLTA.JBS.UI.GeneralLedgerUpdater, Configuration: Debug Any CPU ------

Compile complete -- 0 errors, 0 warnings
========== Build: 86 succeeded or up-to-date, 0 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

这很好,因为输出的最后两行可以快速显示构建的结果(成功/失败)。

在 Visual Studio 2010 中,微软在此之后添加了构建摘要。因此,当我使用相同的设置(例如“安静”选项)在 VS 2010 中构建时,我会在 VS 2008 中已显示的内容之后显示以下内容:

------ Build started: Project: JLTA.JBS.UI.TestBed, Configuration: Debug …
Run Code Online (Sandbox Code Playgroud)

.net c# visual-studio-2010 visual-studio

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