我已经使用了MyGeneration,我喜欢它来生成使用Microsoft的数据访问应用程序块为我的数据访问层创建的代码,并保持我的数据库概念与我正在建模的域同步.尽管如此,一个周末的学习曲线比预期更陡峭,以使其富有成效.
我想知道其他人正在做什么与代码生成有关.
http://www.mygenerationsoftware.com
http://www.codesmithtools.com/
其他?
早在2000年左右,我工作的公司就使用Veritas Software的产品(我相信它)来模拟组件并生成集成组件(dll)的代码.我没有获得很多经验,但似乎代码生成长期以来一直是"圣杯".这是实用的吗?其他人如何使用它?
谢谢!
有没有办法覆盖Java中的行号(例如,通过使用某种预处理器指令)?
我正在使用Janino"编译"高级语言,直到Java字节代码.我需要编译器错误来报告原始文件中的行,而不是生成的Java代码.
C#有#line指令,我已成功利用它将源文件中的行号映射到编译结果.Java需要相同的东西.
谢谢!
我一直在使用xsd.exe生成一个用于反序列化XML的类.我在源xsd中有十进制值,不需要:
<xs:attribute name="Balance" type="xs:decimal" use="optional" />
Run Code Online (Sandbox Code Playgroud)
xsd生成的类生成以下代码:
private decimal balanceField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal Balance {
get {
return this.balanceField;
}
set {
this.balanceField = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到它不是可空的.
我如何将字段生成为可为空的字段,如下所示:
private decimal? balanceField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal? Balance {
get {
return this.balanceField;
}
set {
this.balanceField = value;
}
}
Run Code Online (Sandbox Code Playgroud) Eclipse很好地为我生成了serialVersionUID.但这似乎是被动代码生成,因为我更改文件时id不会自动更新,除非我再次生成代码.
有没有办法在每次更改内容时生成serialVersionUID?"保存行动"似乎没有包含这样的选项 - 有人找到了某种方法来做到这一点吗?
它可以与IDE保存操作或类似的东西结合使用,这样我可以恢复更改,如果我这样做不会影响序列化.
此致,Touko
编辑:@gustafc:这有两点要点:
这听起来合情合理吗?
Summa summarum,经过多思考后,每次更改时自动递增的serialVersionUID会更好......
简而言之:如何在生成程序上调试调试会话期间生成的代码?(见下面的代码)
我面临以下问题:我想从生成它的应用程序调试动态生成/编译的代码.我提供了一个简单的例子来澄清它.这个例子不需要调试!我真正的应用程序生成更多的行和代码,真正证明调试,相信我:-)我想知道是否有一种方法来调试或放置断点HelloWorld.单步调用InvokeMethod调用不起作用.也许解决方案涉及在调用站点对生成的程序集进行代码修改.
我已经看了很多问题(例如在Visual Studio .NET中调试动态加载的程序集),但没有一个有助于解决问题(如果可以解决的话?)
我从http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=118中获取代码作为基础并修复了已废弃的调用.除此之外,我在内存中即时生成了程序集,并且调用运行良好.我明确生成了一个包含Debug信息的程序集,这给了我希望:为什么在没有调试的情况下会有选项呢?
using System;
using System.Text;
using System.IO;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;
namespace DynamicAssembly
{
class CreateCompileExecute
{
[STAThread]
static void Main(string[] args)
{
// Creates a text file to store the new class
StringBuilder builder = new StringBuilder();
builder.AppendLine("using System;");
builder.AppendLine("namespace CSharpFriendsRocks");
builder.AppendLine("{");
builder.AppendLine("class CSharpFriends");
builder.AppendLine("{");
builder.AppendLine("public CSharpFriends() {" +
" Console.WriteLine(\"The CSharpFriends type is constructed\"); }");
builder.AppendLine("public void HelloWorld() {" +
" Console.WriteLine(\"Hello World - CSharpFriends.Com …Run Code Online (Sandbox Code Playgroud) 我有一个工具,可以动态 生成 .xaml和.xaml.cs文件,并将它们放在适当的Visual Studio 目录中.
要将它们添加到项目中,我必须:
有没有办法让我告诉项目"包括硬盘上项目文件夹下的所有现有项目"?
我想知道是否有人知道在Java中使用eclipse生成的更新,构造函数,等于,散列,字符串等的好方法.很多时候,在我使用自动生成的代码存根之后,我将一个成员变量添加到类中,然后我需要删除自动生成的代码,并重新执行它.有没有办法让eclipse将新变量添加到自动生成的代码存根中?
编辑:确定删除不是必需的,但我仍然需要去生成它们,我正在寻找一个自动解决方案.
据我所知,当使用FXML描述Java FX场景时,手动编写控制器类,然后可以从.fxml文件中引用它的成员变量和方法.使用时加载场景FXMLLoader,成员变量设置为相应的场景元素,方法自动连接到相应的事件.这是有效的,但是非常麻烦,因为需要在两个地方进行更改,并且任何错误只会在运行时显示.
我见过其他GUI框架,它允许您从场景描述中生成控制器作为抽象类,需要实现它来访问场景元素并处理事件.我的意思的一个例子:
我将创建以下.fxml文件(例如,使用JavaFX Scene Builder):
<AnchorPane ... >
<children>
<Button fx:id="button" ... text="Button" onAction="#buttonPressed" />
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)
在我的构建过程中的某个地方,.java将创建以下文件(例如,使用Maven插件):
abstract class TestController {
protected final Parent root;
protected final Button button;
{
// Load test.fxml file
// Assign scene elements to root and button
// Attach event handler to the button that calls buttonClicked()
}
protected abstract void buttonClicked(ActionEvent event);
}
Run Code Online (Sandbox Code Playgroud)
然后我可能会多次创建该控制器的具体实现:
final class …Run Code Online (Sandbox Code Playgroud) 我正在考虑通过gcc查看为原子操作生成的一些程序集.我尝试了以下短序列:
int x1;
int x2;
int foo;
void test()
{
__atomic_store_n( &x1, 1, __ATOMIC_SEQ_CST );
if( __atomic_load_n( &x2 ,__ATOMIC_SEQ_CST ))
return;
foo = 4;
}
Run Code Online (Sandbox Code Playgroud)
看看Herb Sutter关于代码生成的原子武器谈话,他提到X86手册要求xchg用于原子存储和简单mov的原子读取.所以我期待的是:
test():
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $1, %eax
xchg %eax, x1(%rip)
movl x2(%rip), %eax
testl %eax, %eax
setne %al
testb %al, %al
je .L2
jmp .L1
.L2:
movl $4, foo(%rip)
.L1:
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
Run Code Online (Sandbox Code Playgroud)
由于锁定 …
I am creating a very thorough converter for Android with Kotlin, using the latest Android Studio Canary build and latest Kotlin. I am suddenly getting a compiling error, even thought Android Studio doesn't see any bug in the code, it is complaining about a backend error, so I think my project is good but the Android Studio has a bug?? Please help confirm, this has been a lot of work....
It is complaining about my class MassCalc, which is 6500 …