【问题标题】:How do I use LINQPad scripts in Visual Studio?如何在 Visual Studio 中使用 LINQPad 脚本?
【发布时间】:2020-11-23 17:03:59
【问题描述】:

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

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

换句话说,我可以实现以下场景吗?
场景:

  • ClassService.linq导入到Visual Studio中的项目中;
  • ClassService.linqVisual Studio中的项目同步;

(同步逻辑:

  • 更改了ClassService.linq ->> 更改了Visual Studio 中的项目;
  • 更改了ClassService. linq Visual Studio 中的项目;)

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

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

已使用

  • LINQPad - 6.9.15x64;
  • Visual Studio - 2019. 社区。​​li>

【问题讨论】:

    标签: c# .net visual-studio .net-core linqpad


    【解决方案1】:

    您不能以这种方式轻松共享源代码,因为 .linq 格式具有带有查询属性的 XML 标头(很像 Visual Studio 项目文件中的信息)。

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

    [assembly: InternalsVisibleTo("LINQPadQuery")]
    

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

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

    【讨论】:

    • 1. referring to DLLs created in VS from LINQPad - 我不明白这是什么意思。您能否更详细地描述这是如何发生的? 2. LINQPad will automatically find the .deps.json file, - 这是怎么发生的?这是谁的.deps.json 文件,它在哪里?在 VS 或 LINQPad 项目中? 3. - you can access internal build types from LINQPad if you add the following to your project's source code file: [assembly: *] - 你能举一个更详细的例子吗? 4. - 我在哪里可以获得有关使用 LINQPad 的详细文档?
    • 在 LINQPad 中按 F4,单击“添加/浏览”,选择您在 VS 中创建的 DLL(从 bin\debug 文件夹中)。该文件夹还将包含由 VS 创建的 .deps.json 文件,其中列出了您项目的所有 NuGet 依赖项。 LINQPad 将自动读取此文件并将这些 NuGet 包添加到您的查询中。这里有一个 InternalsVisibleTo 示例:danclarke.com/linqpad-tips-and-tricks-part2
    • 我不明白……Nugget 和它有什么关系?如果可能的话,如果您解释需要完成的步骤,我将不胜感激。如果我理解你,我会这样看。示例:1.VS在(示例:WinForms)中创建项目; 2. 创建Class Service.cs 类; 3. VS.class Service.cs 创建方法Method1(), Method2(); 4. VS.按 F6.; 问题:如何在 LINQPad 程序中使用(进行更改、调试)Class Service.cs 类?
    • 我想我明白了...我对您的答案进行了更改。如果我理解正确,您可以在 LINQPadVS 中使用相同的项目,只使用以下方案:在 VS 中创建一个 DLL 并将创建的 DLL 添加到“LINQPad”项目中。结果:在VS项目中,我可以更改DLL方法,而在LINQPad项目中我只能使用DLL,但我不能更改DLL的方法。
    • 问题。 1.我理解正确吗?如果我理解错了,请您纠正我吗? 2. 有没有办法在LINQPadVS 中使用同一个项目?换句话说:有一个项目Project-1。我在程序LINQPad 中对项目Project-1 进行了更改。可以在VS 中查看产生的更改。我在程序VS 中对项目Project-1 进行了更改。由于更改,您可以转到LINQPad
    【解决方案2】:

    相反的方法是可能的:LinqPad 6 现在允许共享*.cs 文件。您可以编写类并将其存储为 .linq 文件,而不是尝试在 Visual Studio 中打开 .linq 文件。 .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 文件所在的同一路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多