如何在 Visual Studio 中使用 LINQPad 脚本?

How do I use LINQPad scripts in Visual Studio?

问题。
如何在 Visual Studio 中使用 LINQPad 脚本?

说明。
我在 LINQPad.
中创建了 Class Service.linq class 如何在 Visual Studio 中使用 Class Service.linq class?

也就是说,我可以实现以下场景吗?
场景:

(同步逻辑:

我可以执行全部或部分这些操作吗?

还是LINQPad用于初步开发方案,然后手动将代码转入*.cs文件?

正在使用

您无法以这种方式轻松共享源代码,因为 .linq 格式具有 XML header 和查询属性(类似于 Visual Studio 项目中的信息文件)。

但是,您可以通过从 LINQPad 引用您在 VS 中创建的 DLL 来共享 DLL。 LINQPad 将自动定位 .deps.json 文件(如果存在),并将项目的 NuGet 引用集成到查询中。如果将以下内容添加到项目中的源代码文件,则可以从 LINQPad 访问程序集的内部类型:

[assembly: InternalsVisibleTo("LINQPadQuery")]

要共享 DLL,请执行以下操作:

在 LINQPad 中按 F4,单击 'Add/Browse',选择您在 VS 中创建的 DLL(来自 bin\debug 文件夹)。该文件夹还将包含一个由 VS 创建的 .deps.json 文件,其中列出了项目的所有 NuGet 依赖项。 LINQPad 将自动读取此文件并将那些 NuGet 包添加到您的查询中。这里有一个 InternalsVisibleTo 示例:
danclarke.com/linqpad-tips-and-tricks-part2

相反的方法是可行的:LinqPad 6 现在允许 共享 *.cs 个文件。 而不是尝试在 Visual Studio 中打开 .linq 文件,您可以编写 class 并将其存储为 .cs 文件。

这有以下好处:

  • Visual Studio 原生“理解”.cs 文件
  • LinqPad 可以加载 .cs 文件,因此您可以与 Visual Studio
  • 共享同一个文件

为此,在 LinqPad 中创建一个新的“C# 程序”。

假设你有一个文件KeyValueClass.cs:

using System;

namespace myRedisDemo
{
    /// <summary>
    /// Class for key / value pair
    /// </summary>
    /// <example>{"Key":"name", "Value":"Matt"}</example>
    public class KeyCalueClass
    {
        /// <summary>
        /// The key
        /// </summary>
        public string Key { get; set; }

        /// <summary>
        /// The value
        /// </summary>
        public string Value { get; set; }
    } // class

} // namespace

您想在 ReferenceCsFiles.linq 中使用它
目录C:\Users\Matt\source\repos\A. Demos\myRedisDemo\如下:

#load "C:\Users\Matt\source\repos\A. Demos\myRedisDemo\KeyCalueClass.cs"

void Main()
{
    var obj = new myRedisDemo.KeyCalueClass();
    obj.Dump();
}

这将从您的 Visual Studio 项目编译 KeyValueClass.cs 文件并在 LinqPad 中 运行 它。


您甚至可以导入所有带有通配符的 .cs 文件,例如

#load "C:\Users\Matt\source\repos\A. Demos\myRedisDemo\*.cs"

所有子目录如下:

#load "C:\Users\Matt\source\repos\A. Demos\myRedisDemo\*.cs /s"

最后,如果你省略了像

这样的路径
#load "KeyCalueClass.cs"

那么它将引用 .linq 文件所在的同一路径。因此,您可以将支持的 *.linq 文件保存在与您的 classes 相同的目录中,并且只引用没有路径的 *.cs 文件。