小编Dzm*_*oda的帖子

创建文件快捷方式(.lnk)

我一直在寻找一种在C#中创建文件快捷方式的简单方法,但我只找到了那样做的外部dll.这实际上是相当令人惊讶的,没有内置的方法来做到这一点..

无论如何,我知道lnk文件只是具有特定命令和给定路径的文本文件.我想也许我可以创建一个文本文件(在代码中)将它的文本设置为正确的命令并将其扩展名更改为.lnk我尝试先手动执行此操作,但未能这样做.

有没有办法做这样的事情(或者可能是另一种简单的方法)来创建c#中某个路径的快捷方式?

为了清楚起见,通过快捷方式我的意思是一个.lnk文件,它导致文件 编辑:而文件我指的是我想要的任何文件,而不仅仅是我自己的应用程序的快捷方式


如果它不适合每个场景,我会编辑.

添加以下参考:

  1. Microsoft Shell控件和自动化
  2. Windows脚本宿主对象模型

添加此命名空间:

using Shell32;
using IWshRuntimeLibrary;
Run Code Online (Sandbox Code Playgroud)

接下来似乎工作:

var wsh = new IWshShell_Class();
IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
    Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\shorcut2.lnk") as IWshRuntimeLibrary.IWshShortcut;
shortcut.TargetPath = @"C:\Users\Zimin\Desktop\test folder";            
shortcut.Save();
Run Code Online (Sandbox Code Playgroud)

希望它能帮助其他人,感谢您的关注.

另外,如果有一种创建文件的方法,请编写正确的命令,然后将其更改为lnk文件,请告诉我.

c# automation shortcut lnk

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

您是否知道使用静态类型检查语言,其中Code是Data?

你能用静态类型检查(如Java)命名语言,代码是数据(如LISP)吗?我的意思是两种语言.

lisp programming-languages static-typing s-expression

17
推荐指数
3
解决办法
1827
查看次数

如何将Expression转换为CSharpCompilation或CSharpSyntaxTree?

如何转换:

System.Linq.Expression.Expression
Run Code Online (Sandbox Code Playgroud)

成:

Microsoft.CodeAnalysis.CSharp.CSharpCompilation
Run Code Online (Sandbox Code Playgroud)

或者进入:

Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree
Run Code Online (Sandbox Code Playgroud)

我需要下一个具体案例才能像其中一个选项一样工作:

  • 我可以编译ExpressionCSharpSyntaxTree执行可执行代码的相同行为

  • 当我看到手动输入的C#表达式时,我可以得到CSharpSyntaxTree并生成相同的代码.

    public void MultipleStatementsBlockTest()
    {
        var p = Expression.Parameter(typeof(int), "p");
        Expression assignment = Expression.Assign(p, Expression.Constant(1));
        Expression addAssignment = Expression.AddAssign(p, Expression.Constant(5));
        // Convert addAssignment  to Roslyn tree here
    }
    
    class HasIndexers
    {
        public object this[string s] => null;
    
        public object this[int i] => null;
    }
    public void CanPrettyPrintVariousIndexers()
    {
        Expression<Func<Bool>> expr = () => new HasIndexers()[3] == new HasIndexers()["three"];
        // Convert expr to Roslyn tree here
    } …
    Run Code Online (Sandbox Code Playgroud)

.net c# roslyn

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

C# 引用计数

我正在寻找一种很好的模式来在 C# 中实现引用计数。我有一个

Dictionary<string, MyObject> ObjList;
Run Code Online (Sandbox Code Playgroud)

我想要做的是分发对MyObject实例的引用(如果它们存在),如果它们不存在则创建新的引用。我的代码中的多个地方可能会引用一个MyObject实例,但是当所有地方都被释放时,我想将它从我的字典中删除。我已经调查过了,WeakReference但我不确定它是否适用于这里??

编辑 1.) 细节我使用的是OPC服务器,所以每当我引用一个项目时,我都想使用字典来查找对该项目的现有引用。当我不再需要该项目时,我想取消订阅该项目。要知道我的代码中当前何时或有多少地方正在使用该项目并不容易。

.net c# dictionary reference

6
推荐指数
1
解决办法
7072
查看次数

通用构造要求类型'Cell <'T>'是非托管类型

为什么我不能在F#中使用通用的非托管结构?可能Cell<'T when 'T: unmanaged>是不是没有管理,那么我怎么能解决这个问题?

type FloatCell =
    struct
        val x: float
        val y: nativeptr<FloatCell>
    end
    
[<Struct>]
[<StructLayout(LayoutKind.Sequential)>]
type Cell<'T when 'T: unmanaged> =
    struct
        val x: 'T
        val y: nativeptr<Cell<'T>>
    end   
Run Code Online (Sandbox Code Playgroud)

错误FS0001:通用构造要求类型'Cell <'T>'是非托管类型[E:\ dzmitry\src\uncorefx\src\uncorefx\uncorefx.fsproj]

更新:

C#也一样.

   unsafe struct FloatCell
    {
        public float val;
        public FloatCell* next;
    }

    [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
    unsafe struct Cell<T> where T: unmanaged
    {
        public float val;
        public Cell<T>* next;
    }
Run Code Online (Sandbox Code Playgroud)

有错误:

错误CS0208:无法获取地址,获取大小或声明指向托管类型的指针('Program.Cell')

我不认为它是管理的.

UPDATE2:

我试过属性.没有帮助.我使用了扩展属性进行强制转换.可能解决方案 但质疑为什么我不能原生那样做?或者我能做到吗?或者我应该提出C#/ F#问题?

[<Struct>]
[<NativeCppClass>]
[<System.Runtime.CompilerServices.UnsafeValueType>]
[<StructLayout(LayoutKind.Sequential)>]
type Cell<'T when 'T: …
Run Code Online (Sandbox Code Playgroud)

.net c# f# native unmanaged

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

Gremlin 查询以获取节点的边数和其他 V

用例:获取节点的所有边,按标签分组,并按标签、显示名称和两者的计数对 otherV 分组。

图有以下节点:post、product、company。帖子有一个名为评论的产品和公司。

对于 postid,有没有办法获取按产品和公司分组的评论计数。

我想在表格中显示以下信息。

postid | 评论(计数)| 产品(计数) postid | 评论(计数)| 公司(数)

我试过outE()out()带有groupby标签,但我似乎无法构建一个查询,该查询会给我多个groupby's的计数。

非常感激任何的帮助。
提前致谢。

graph = TinkerGraph.open()
g = graph.traversal()
v1 = graph.addVertex(id, 1, label, "post")
v2 = graph.addVertex(id, 2, label, "company")
v3 = graph.addVertex(id, 3, label, "company")
v4 = graph.addVertex(id, 4, label, "product")
v5 = graph.addVertex(id, 5, label, "product")
v1.addEdge("reviews", v2)
v1.addEdge("reviews", v3)
v1.addEdge("reviews", v4)
v1.addEdge("reviews", v5)
Run Code Online (Sandbox Code Playgroud)

图片

gremlin

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