我是.Net开发人员,但对于我目前的项目,我必须创建一些Java代码.我过去做了一些Java编码(我甚至使用Java学习了OOP),但我不熟悉Eclipse,我必须使用它.
我必须创建一些共享通用功能的Java控制台应用程序.我想将该常用功能捆绑到一个库(JAR文件)中,并使用命令行程序中的该文件.当我更改库时,还必须重建所有相关的控制台应用程序.
在Visual Studio(.Net)中,我将创建一个新的解决方案并添加一个"类库"项目和多个"控制台应用程序"项目,并使它们依赖于类库.我无法使用Eclipse/Java重新创建相同的设置.我想.Net类库的Java等价物是一个JAR文件.但是,我还没有找到如何在Eclipse中创建一个JAR文件项目(我可以将项目导出到JAR,但这是一个手动步骤;我喜欢这样自动去)并从多个"正常"引用这个JAR项目"Java项目.
我希望我已经清楚地解释了自己.任何人都能解释一下吗?
我有一些C#类库,它们的设计没有考虑并发,多线程,锁等等......
代码结构非常好,易于扩展,但它可以从多线程中受益匪浅:它是一组科学/工程库,需要在非常短的时间内执行数十亿次计算(现在它们不会带来好处从可用的核心).
我想将所有这些代码转换为一组多线程库,但我不知道从哪里开始,我没有任何以前的经验.
我可以使用任何可用的帮助,以及任何建议/建议.
我什么时候应该在.NET中使用多个类库.我有一种情况,我需要使用Microsoft Office对象模型的功能来检查Microsoft Office文件的某些属性.我应该使用不同的类库来处理不同的文件类型.
eg:- 1 library for word files,
1 library for ppt,
so on.
Run Code Online (Sandbox Code Playgroud)
或者我应该把所有东西都塞进一个类库中.
在构建多个类库之前,我应该自己提出什么问题.
我想订阅AppDomain.CurrentDomain.UnhandledException事件以捕获任何错误,因为我正在尝试新的设计模式,我不想在每个事件上放置try catch.
通常在win form app中有一个主入口点,但这是一个由另一个应用程序调用的类库.
在类库中是否有一个主要的入口点,我可以在这里挂钩这个事件,或者它是否在类库中是不可能的,除非我确定在其他任何方法之前调用一个方法?
我是软件开发的新手,也是stackoverflow的新手,所以对我来说很容易.
背景:我正在开发一个C#类库,它通过tcp/ip处理第三方应用程序发送的xml消息(使用异步套接字).我正在使用com-interop将类库公开给Vb6应用程序.当C#库处理它通过套接字接收的xml时,它会引发消费vb6应用程序订阅的各种事件(这样,当我们最终在.Net中重写整个应用程序时,我们已经完成了这个组件).
问题:我想捕获所有仅用于登录的未处理异常.在winforms应用程序中,您可以将事件连接到AppDomain.CurrentDomain.UnhandledException和Application.ThreadException.有没有办法同样抓取异常数据来记录类库中的信息?
重点:
我不是试图从这些异常中恢复,而只是记录它们并让异常传播并在需要时崩溃应用程序.
我正在尽力在本地捕获所有特定异常,无论我知道它们可能发生在哪里.因此,我的目的是记录真正意外的异常.
任何人都可以为我提供一些方向吗?到目前为止,我发现的最佳选项似乎是在每个公共方法中放置一个通用的try catch块,记录异常,然后抛出它.这似乎不太理想:
public void SomeMethod()
{
try
{
// try something here...
}
catch (Exception ex)
{
Log(ex);
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
这不仅看起来像一个糟糕的设计,而且我不知道如果其中一个异步回调在不同的线程上导致异常而不是调用该方法会发生什么.这个通用的try/catch块是否仍会捕获这样的异常?
谢谢你的帮助.
编辑:我最初标记@Eric J.的答案是正确的,但在尝试实现解决方案后,我发现它不能很好地处理我正在使用的套接字类的异步回调.一旦使用线程池线程来触发异步回调,我似乎无法捕获堆栈中稍后发生的任何异常.我是否需要使用AOP框架,还是有其他方法来捕获这些异常?
c# multithreading class-library com-interop unhandled-exception
我需要在ac#class library创建的弹出窗口中显示Bitmap图像.这怎么可能?
我尝试过以下方法:
Bitmap img = tpv.Img();
Graphics graphics = Graphics.FromImage(img);
graphics.DrawImage(img, 0, 0);
Run Code Online (Sandbox Code Playgroud)
和
Bitmap img = tpv.Img();
PictureBox pb = new PictureBox();
pb.Size = img.Size;
pb.Image = img;
pb.Show();
Run Code Online (Sandbox Code Playgroud)
但是没有显示窗口.是否有可能获得一个类库来创建一个显示位图图像的弹出窗口?
我已经在研究.net项目,但我认为这个问题适用于任何编程语言/框架.
问题是读取类库配置的好方法是什么.我可以想到以下选项:
任何想法/偏好?
有没有一种方法可以捕获和处理在类库的任何方法中引发的所有异常的异常?
我可以在每个方法中使用try catch构造,如下面的示例代码所示,但是我正在寻找类库的全局错误处理程序。该库可由ASP.Net或Winforms应用程序或其他类库使用。
这样做的好处是开发更容易,并且不需要在每种方法中重复执行相同的操作。
public void RegisterEmployee(int employeeId)
{
try
{
....
}
catch(Exception ex)
{
ABC.Logger.Log(ex);
throw;
}
}
Run Code Online (Sandbox Code Playgroud) 最初我有一个可以发布到Azure的ASP.NET 5项目,没有任何问题.然后我决定将DAL分成一个单独的类项目,但遇到了许多依赖问题.然后我决定用空白类库创建一个空白项目,看看我是否能解决问题所在,但我甚至都无法发布.
脚步:
这是项目结构:
由此产生的ASP.NET 5 project.json:
"frameworks": {
"dnx451": {
"dependencies": {
"ClassLibrary1": "1.0.0-*"
}
},
"dnxcore50": { }
},
Run Code Online (Sandbox Code Playgroud)
所以它成功引用,我可以在自托管上构建和部署,但如果我尝试将其发布到Azure,我会收到以下错误消息:
The "Dnu" task failed unexpectedly.
System.Exception:
Microsoft .NET Development Utility CLR-x86-1.0.0-beta6-12256
Copying to output path C:\Users\MyUserDir\AppData\Local\Temp\PublishTemp
Time elapsed 00:00:04.1309210
at Microsoft.DNX.Tasks.Dnu.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder. <ExecuteInstantiatedTask>d__26.MoveNext()
Run Code Online (Sandbox Code Playgroud)
我使用的是Visual Studio 2015和ASP.NET 5 Beta 7.
编辑: 经过一些游戏,我不认为我的答案是正确的.我现在意识到有些情况下不能使用新类型的类库,例如现有的旧类库,这对端口来说可能是不切实际的.有办法做到这一点吗?
我已经尝试过dnu publish,它发布完全没问题.然后我将输出FTP到服务器上,然后它给了我一个Runtime Error.我尝试使用Visual Studio远程调试它.我可以看到当我访问网站时抛出异常,但我无法确定问题究竟是什么.抛出的第一个例外之一是:
Exception thrown: 'System.InvalidOperationException' in AspNet.Loader.dll …
在Visual Studio 2017中工作; 我在项目中添加了一个类库。现在我要添加一个app.config文件。
当我尝试通过“添加新项目”进行添加但项目列表中缺少配置文件时。
我该怎么做?
class-library ×10
c# ×7
.net ×3
app-config ×1
asp.net ×1
asp.net-core ×1
azure ×1
base-class ×1
bitmap ×1
com-interop ×1
dll ×1
eclipse ×1
image ×1
jar ×1
popup ×1
web-config ×1