标签: code-generation

Visual Studio 的 Python 代码生成器?

我有一个想法,如果我将 python .py 文件添加到我的 C# 项目中,并使用将执行 python 文件的自定义生成器标记该文件,并将输出视为代码生成的结果,即。将其放入 C# 文件中,这将允许我在构建过程中生成大量代码。

有谁知道 Visual Studio 2008 是否存在这样的自定义生成器?

python code-generation visual-studio-2008

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

需要生成EDMX文件并编译

对于这里的高级用户来说,我的问题可能有点不同或基本。

我有一个可由管理员自定义的网络应用程序。这意味着,管理员可以添加新的表架构或编辑表列、添加新的表列等。这些更改将映射到更改后发布的逻辑对象(与 EDMX 非常相似)。在发布时,我们会生成带有必要更改的存储过程。

从 UI 中,我们使用这些逻辑对象来连接 DB(使用 COM 来理解映射并执行适当的存储过程和视图等)。现在我正在考虑使用 EF 来替换我们当前拥有的逻辑对象模型。我可以动态创建 EDMX 文件(csdl、msl、ssdl、cs 文件),但我不确定如何编译它们并将类动态打包到 DLL 中。这意味着,当我单击按钮时,将创建所有 edmx 相关文件,并且必须基于 CS 文件创建 DLL,并且网站必须能够访问代码中的新更改。

你能帮我如何自动动态编译cs文件吗?我不会在客户端拥有其他文件(如 default.aspx 等)的源代码。

谢谢艾伯特

c# code-generation compilation dynamic edmx

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

运行时代码生成和编译

假设我有这段代码,它使用一些输入(例如 URL 路径)来通过反射来确定要运行的方法:

// init
map.put("/users/*", "viewUser");
map.put("/users", "userIndex");

// later
String methodName = map.get(path);
Method m = Handler.class.getMethod(methodName, ...);
m.invoke(handler, ...);
Run Code Online (Sandbox Code Playgroud)

这使用反射,因此可以提高性能。可以这样做:

// init
map.put("/users/*", new Runnable() { public void run() { handler.viewUser(); } });
map.put("/users", new Runnable() { public void run() { handler.userIndex(); } });

// later
Runnable action = map.get(path);
action.run();
Run Code Online (Sandbox Code Playgroud)

但手动创建所有这些Runnable都有其自身的问题。我想知道,我可以在运行时生成它们吗?因此,我将拥有第一个示例中的输入映射,并动态创建第二个示例的映射。当然,生成它只是构建一个字符串的问题,但是编译和加载它呢?

注意:我知道性能提升很小,这是过早优化的完美例子。因此,这是一个学术问题,我对运行时生成和代码编译感兴趣。

java code-generation javac runtime-compilation classloader

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

如何生成多种语言的类

我正在寻找一种方法来生成多种语言(Java、C#、JavaScript)的一些模型类,以保持这些语言之间的一致性。是否有一些工具可以帮助我在一个地方定义模型并在所有三种语言的每次更改后生成它?我正在查看JetBrains MPS,但它似乎对于仅生成一种语言很有用,甚至在文档中写道,仅推荐一种语言生成器(如果有)。

到目前为止我发现的唯一方法是每种语言的 XML 文件和 XSL 转换,但我正在寻找更方便的方法。

javascript c# java code-generation mps

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

LLVM:在分布式/并发系统中移动生成的代码

我主要使用 LLVM C++ API 作为脚本语言的代码生成器,在运行时解析和评估(生成代码、编译和执行代码)。目前,我正在研究分布式/并发系统中的未来用例,并想知道是否以及如何实现这些用例。也许你可以分享你的想法:

  1. 有没有一种方法可以在分布式系统的一个节点上生成 LLVM 代码,将其序列化为某种有线格式,将其发送到另一个节点,在那里编译或重新编译,然后执行它?我已经在寻找序列化模块/函数的方法了。
  2. 有没有办法在同一个 LLVMContext 中启用多线程代码生成/编译,即线程池共享 LLVMContext 并同时在此上下文中生成/执行代码。到目前为止我发现在这种情况下每个线程都应该有一个 LLVMContext。但是,我可以在不同上下文之间共享一个模块,并与 1) 相关,如何将生成的代码从一个模块移动到另一个模块?

concurrency code-generation move llvm

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

如何自动生成C代码

我正在做一个 C 项目。我观察到很多代码可以根据某些规则自动生成。IE。如果我只指定C结构,基于此,代码可以自动生成。我知道可以做到,但我以前没做过。如果经验丰富的 C 程序员能够提供某些指导或分享他们关于如何以最少的工程工作完成此类事情的经验,那就太好了。

编辑:具体来说,我是否需要用 C 编写一个自定义解析器来完成所有这些操作,或者是否有一些更简单的方法来处理这个问题?

c code-generation

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

扩展循环中断

在 Xtend 中,是否可以中断循环或检查以中断循环?

\n\n
\xc2\xabFOR e:d.entitys\xc2\xbb\n    \xc2\xabFOR a:e.attributes\xc2\xbb\n        \xc2\xabIF a.eClass.name.contentEquals(\'Something\')\xc2\xbb\n            \xc2\xabe.name\xc2\xbb "This output should be output one for each Entity e"\n        \xc2\xabENDIF\xc2\xbb\n    \xc2\xabENDFOR\xc2\xbb\n\xc2\xabENDFOR\xc2\xbb\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的输出是:

\n\n
Entity 1 "This output should be output one for each Entity e"\nEntity 1 "This output should be output one for each Entity e"\nEntity 1 "This output should be output one for each Entity e"\nEntity 2 "This output should be output one for each Entity e"\nEntity 4 "This output should be output one for each …
Run Code Online (Sandbox Code Playgroud)

loops code-generation break xtend

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

如何扩展角度示意图属性?

我的问题是否可以扩展架构属性?

我试过的:
collection.json

{
  "$schema": "http://schema.angular.io/schematics/collection/2",
  "name": "@my/schematics",
  "description": "my default collection, containing all schematics that are used normally",
  "schematics": {
    "library": {
      "extends": "@nrwl/angular:library", <--- extends nrwl library
      "aliases": [ "lib" ],
      "factory": "./library",
      "description": "Create my library.",
      "schema": "./library/schema.json"
    }
}
Run Code Online (Sandbox Code Playgroud)

图书馆/schema.json

{
  "$schema": "http://schema.angular.io/schematics/collection/2",
  "id": "SchematicsAngularLibrary",
  "title": "Create my library",
  "type": "object",
  "properties": {
    "legacy": {    <--- adds custom property
      "type": "boolean",
      "description": "Legacy mode",
      "default": false
    }
  },
  "required": []
}

Run Code Online (Sandbox Code Playgroud)

和我的简化原理图库/index.ts

import { chain, externalSchematic, …
Run Code Online (Sandbox Code Playgroud)

code-generation angular-cli angular angular-schematics nrwl

5
推荐指数
0
解决办法
257
查看次数

netstandard 代码生成器 Microsoft.Data.SqlClient 抛出 FileNotFound System.Security.Principal.Windows,Version=4.1.1.0

我的 netstandard 2.0 代码生成器被核心 5.0 控制台应用程序引用。

csproj 看起来像这样

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        <LangVersion>9.0</LangVersion>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Func" Version="0.2.2" />
        <PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.2">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
        <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.8.0" PrivateAssets="all"/>
    </ItemGroup>
    
  <ItemGroup>
    <!-- Generator dependencies -->
    <PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.1" GeneratePathProperty="true" PrivateAssets="all" />
  </ItemGroup>

    <PropertyGroup>
        <GetTargetPathDependsOn>$(GetTargetPathDependsOn);GetDependencyTargetPaths</GetTargetPathDependsOn>
    </PropertyGroup>
    
    <Target Name="GetDependencyTargetPaths">
        <ItemGroup>
             <!--<TargetPathWithTargetPlatformMoniker Include="$(PKGSystem_Security_Principal_Windows)\runtimes\win\lib\netstandard1.3\System.Security.Principal.Windows.dll" IncludeRuntimeDependency="false" />-->
             <TargetPathWithTargetPlatformMoniker Include="$(PKGMicrosoft_Data_SqlClient)\runtimes\win\lib\netstandard2.0\Microsoft.Data.SqlClient.dll" IncludeRuntimeDependency="false" />
        </ItemGroup>
    </Target>

</Project>

Run Code Online (Sandbox Code Playgroud)

并引用 Microsoft.Data.SqlClient。

试图创建一个新的时,SqlConnection这样的

_dbConnection = new SqlConnection();           
_dbConnection.ConnectionString = @"validconnectionstring";
_dbConnection.Open();
Run Code Online (Sandbox Code Playgroud)

在连接打开时,会抛出一个带有消息的异常:

Could not …
Run Code Online (Sandbox Code Playgroud)

c# code-generation roslyn c#-9.0

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

有没有办法将生成的文件放在单独的文件夹中?

在我的应用程序中,我使用了 json_serializable 冻结。在我放置所有数据模型的文件夹中,有很多生成的文件,例如model.g.dart, model.freeezed.dart. 是否有可能将所有生成的文件像这样移动到项目中的单独文件夹中,例如generated?

code-generation dart flutter build-runner

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