当你想从 python 调用 C 时,你写一个这样的模块:
http://docs.python.org/extending/extending.html
现在,我有一个问题:
我想用 C# 编写一个在 Python 中使用的模块。
如何让 C# 与原生 Python 交互?
(注意:我对 Python.NET 或 IronPython 不感兴趣)。
题:
我在这里使用DropBox csharp API:https:
//github.com/dkarzon/DropNet
从单元测试,以及这里唯一的工作样本 https://github.com/dkarzon/DropNet/blob/master/DropNet.Samples/DropNet.Samples.Web/Default.aspx.cs
我认为它的工作原理如下:
DropNet.DropNetClient client = new DropNet.DropNetClient(strApiKey, strAppSecret);
DropNet.Models.UserLogin login = client.GetToken();
client.UserLogin = login;
var accountInfo = client.AccountInfo();
str = accountInfo.quota_info.quota.ToString();
Run Code Online (Sandbox Code Playgroud)
探测器是,它会在accountinfo上引发异常.(System.Net.HttpStatusCode.Unauthorized)一切正常,我得到登录(usertoken&usersecret).
我认为我的问题是示例应用程序的这一部分:
var url = _client.BuildAuthorizeUrl(Request.Url.ToString() + "?dropboxcallback=1");
Response.Redirect(url);
Run Code Online (Sandbox Code Playgroud)
它重定向到Dropbox进行登录...我没有Web应用程序,所以我没有URL ...
我所拥有的是一个控制台应用程序,应该每天晚上自动备份我的数据库作为服务,对于它来说当然非常糟糕,需要webbrowser和用户必须输入电子邮件/用户名+密码.
如何通过直接提供硬编码的用户名和密码来登录?
如果我使用示例应用程序,那么它可以工作,但这需要在Web上输入用户名和密码,这对于控制台应用程序来说是很大的时间......
如何在 .NET Core 中卸载程序集?
注意:
.NET Core 不支持 AppDomain。
背景:
我必须动态评估用户生成的 VisualBasic 表达式。
为此,我使用 Roslyn 动态编译表达式。
我从 Roslyn 编译器生成的字节数组加载生成的程序集。
然后我创建一个实现抽象类的实例(因此我不必使用反射)。然后我调用抽象类的方法EvaluateExpression。
完成此操作后,我想卸载已加载的程序集(否则,我将享受内存泄漏的乐趣)。
因此,我在计算表达式后立即卸载程序集:
Parameters.AbstractEvaluator x = RoslynExpressionEvaluator.CreateEvaluator(expression, report.Code);
object value = x.EvaluateExpression();
x.LoadContext.Unload();
Run Code Online (Sandbox Code Playgroud)
(loadContext在生成时保存在抽象类中)
到目前为止一切正常,但是在x.LoadContext.Unload();,我得到
System.InvalidOperationException:“无法卸载不可收集的 AssemblyLoadContext。”
有可能解决这个问题吗?
如何使组件成为收藏品?
另外,我注意到我可以加载具有相同类名的程序集(如您所见,代码中没有命名空间)
这在多线程环境(又名网络)中表现如何?
我可以无限地加载动态生成的类的不同版本,直到机器用完 RAM 而没有出现故障吗?
或者为什么当加载同一个类两次时这会起作用?
using Microsoft.CodeAnalysis.Operations;
namespace ReportTester
{
public static class RoslynExpressionEvaluator
{
// a utility method that creates Roslyn compilation
// for the passed code.
// The compilation references the collection of
// passed "references" arguments …Run Code Online (Sandbox Code Playgroud) c# code-generation expression-evaluation assembly-loading roslyn
Microsoft 已经定义了IHostLifetimeWorkerServices 在不同平台上作为服务运行的接口。(您可以dotnet new worker在控制台中创建一个 Worker Service 项目)。
如果你想运行它们的系统服务,您可以使用微软的扩展systemd和Windows服务(见的NuGet Windows服务和Systemd)。
是否已经有针对 MacOS 的实现(例如 launchd),或者如果我也想通过我的服务支持 MacOS,我是否需要为自己实现?
在我作为程序员的工作中,我将编写一个用C++编写的程序,用于将音频文件转换为各种格式.可能,这将涉及构建一个简单的GUI.
使用Cocoa和WinForms而不是像Qt或GTK这样的跨平台工具包为Mac和Windows构建单独的GUI是否会很费力?
(无论如何,我将不得不维护一个单独的Windows版本和Mac版本)
GUI可能非常简单,只需要非常基本的功能.
我一直觉得原生的GUI比跨平台的兄弟们更直观......
C#是否具有为复制项目生成新名称的任何功能?
例如,如果我有一个名为"Folder"的字符串,我需要一个函数来生成一个字符串"Copy of Folder"....并且给出字符串"Copy of Folder"该函数应该生成"Copy of Folder(1) " 等等 ....
问题:我有一个可以在另一个程序中加载的DLL.现在,dll可以访问其他程序中的所有数据/功能.
现在外部程序可以向该dll发送数据/命令,引导其他程序或从中获取数据,我可以使用哪种技术?
我的意思是,在过去,这意味着DDE,我认为这是在Windows 3.11/95次.我今天可以用什么?哪一个最容易?哪一个最快?
问题:我有一个ASP.NET应用程序,可以创建临时PDF文件(供用户下载).现在,许多用户在很多天内都可以创建许多PDF,这需要占用大量磁盘空间.
安排删除超过1天/ 8小时的文件的最佳方法是什么?最好是在asp.net应用程序本身...
问题:我有一个安装程序,它会随程序安装一些本机dll.dll位于一个单独的文件夹中,我将其添加到路径环境变量中.
这已成功完成,如果我检查Windows系统设置,变量将显示在路径中.
但是,如果我启动命令行程序/服务,它说dll未找到...
我用set命令检查环境变量路径,我的文件夹不在那里.
如果我做
SET path = %path%;my/folder/here/
Run Code Online (Sandbox Code Playgroud)
然后启动我的程序,然后它的工作原理.
根据这篇MS KB文章,这是因为需要重新启动计算机.
除非我这样做
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "Environment", SMTO_ABORTIFHUNG, 5000, &dwReturnValue);
Run Code Online (Sandbox Code Playgroud)
现在我只使用下面的代码,但错误消息仍然存在.%path%中的我的文件夹拼写正确,我检查了一下.
我究竟做错了什么 ?
' http://www.pinvoke.net/default.aspx/Enums/SendMessageTimeoutFlags.html '
<Flags()> _
Public Enum SendMessageTimeoutFlags
SMTO_NORMAL = 0
SMTO_BLOCK = 1
SMTO_ABORTIFHUNG = 2
SMTO_NOTIMEOUTIFNOTHUNG = 8
End Enum
' http://ghouston.blogspot.com/2005/08/how-to-create-and-change-environment.html '
Public Const HWND_BROADCAST As Integer = &HFFFF
Public Const WM_SETTINGCHANGE As Integer = &H1A
' http://pinvoke.net/default.aspx/user32.SendMessageTimeout '
<System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SendMessageTimeout(ByVal windowHandle As IntPtr, ByVal Msg …Run Code Online (Sandbox Code Playgroud) 问题:我想测试PostgreSQL中的if语句:
IF (SELECT COUNT(*) FROM pg_language WHERE lanname = 'plpgsql') > 0 THEN
PRINT 'Good'
ELSE
PRINT 'Bad'
END IF;
Run Code Online (Sandbox Code Playgroud)
现在这会在IF处抛出错误.
据我所知,这是因为我需要使用plpgsql来使用if,print和variables.
到目前为止,我可能还必须使用SELECT而不是print.
在将此语句执行到plpgsql之前,如何切换语言?
我想先测试它,然后我把它放在存储过程中.用变量等测试代码
编辑:
解决方案:
DO LANGUAGE plpgsql $$
BEGIN
IF (SELECT COUNT(*) FROM pg_language WHERE lanname = 'plpgsql') > 0 THEN
RAISE NOTICE 'GOOD';
ELSE
RAISE NOTICE 'BAD';
END IF;
END;
$$;
Run Code Online (Sandbox Code Playgroud)