Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/WM7S8.png" height="16" width="18" alt="" class="sponsor tag img">servicestack ServiceStack/types/csharp在v5.7中生成无效的属性签名_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack ServiceStack/types/csharp在v5.7中生成无效的属性签名,servicestack,servicestack" /> servicestack ServiceStack/types/csharp在v5.7中生成无效的属性签名,servicestack,servicestack" />

servicestack ServiceStack/types/csharp在v5.7中生成无效的属性签名

servicestack ServiceStack/types/csharp在v5.7中生成无效的属性签名,servicestack,servicestack,在升级到ServiceStack v5.7的过程中,NativeTypesService在/types/csharp处生成的文件现在正在生成无效代码。我们使用的是ASP.Net(非核心),.NETFramework 4.7.2 具体而言,引用和字符串长度属性是使用命名参数生成的,当包含在客户机项目中时(使用相同版本的ServiceStack),会导致错误: 我已经检查了CSharpGenerator的相关位,但多年来没有任何变化。我不知所措 如何使用/types/csharpnativetype

在升级到ServiceStack v5.7的过程中,NativeTypesService在
/types/csharp
处生成的文件现在正在生成无效代码。我们使用的是ASP.Net(非核心),.NETFramework 4.7.2

具体而言,
引用
字符串长度
属性是使用命名参数生成的,当包含在客户机项目中时(使用相同版本的ServiceStack),会导致错误:

我已经检查了
CSharpGenerator
的相关位,但多年来没有任何变化。我不知所措

如何使用
/types/csharp
nativetypes服务端点生成有效代码?


我在下面创建了一个最小的示例项目来说明这一点。所有ServiceStack库都是v5.7(文本、接口等)。当我们仅将核心
ServiceStack
降级到v5.6时,将生成预期的输出

v5.6签名

namespace TestTypes
{

[Route("/Child")]
public partial class Child
{
    public virtual int Id { get; set; }
    [References(typeof(TestTypes.Parent))]
    public virtual int ParentId { get; set; }
}

[Route("/Parent")]
public partial class Parent
{
    public virtual int Id { get; set; }
    [StringLength(100)]
    public virtual string Name { get; set; }
}
namespace TestTypes
{

[Route("/Child")]
public partial class Child
{
    public virtual int Id { get; set; }
    [References(Type=typeof(TestTypes.Parent))]
    public virtual int ParentId { get; set; }
}

[Route("/Parent")]
public partial class Parent
{
    public virtual int Id { get; set; }
    [StringLength(MaximumLength=100)]
    public virtual string Name { get; set; }
}
}
}

v5.7签名

namespace TestTypes
{

[Route("/Child")]
public partial class Child
{
    public virtual int Id { get; set; }
    [References(typeof(TestTypes.Parent))]
    public virtual int ParentId { get; set; }
}

[Route("/Parent")]
public partial class Parent
{
    public virtual int Id { get; set; }
    [StringLength(100)]
    public virtual string Name { get; set; }
}
namespace TestTypes
{

[Route("/Child")]
public partial class Child
{
    public virtual int Id { get; set; }
    [References(Type=typeof(TestTypes.Parent))]
    public virtual int ParentId { get; set; }
}

[Route("/Parent")]
public partial class Parent
{
    public virtual int Id { get; set; }
    [StringLength(MaximumLength=100)]
    public virtual string Name { get; set; }
}
}
示例项目

public class AppHost : AppHostBase
{
    public AppHost() : base("Test", typeof(MyService).Assembly) { }

    public override void Configure(Container container) { }
}

public class MyService : Service
{
    public object Get(Parent request) { return null; }
    public object Get(Child request) { return null; }
}

[Route("/Parent")]
public class Parent
{
    [PrimaryKey]
    public int Id { get; set; }

    [StringLength(100)]
    public string Name { get; set; }
}

[Route("/Child")]
public class Child
{
    [PrimaryKey]
    public int Id { get; set; }

    [References(typeof(Parent))]
    public int ParentId { get; set; }
}

这个问题现在应该用最新版本解决。

我认为这只是5.7中的一个错误行为。从那以后,它就被修复了。我想我们将降级到5.6,然后等待5.7.1或5.8。您能用重试吗?我从master中获取了最新版本,它成功了。我还喜欢导出的引用现在拥有整个名称空间!不幸的是,无法将MyGet用于我们的CI/CD,但很高兴知道有一个修复程序正在等待。