只有当所有setter都是公共的时,SGen才会生成xml序列化程序集吗?
我在DummyProject中有这个课程:
public class DummyClass
{
public int Sequence { get; internal set; }
}
在我的AssemblyInfo.cs中,我已声明:
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DummyProject.XmlSerializers")]
在我的csproj中,我已经说过了:
<Target Name="AfterBuild" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)">
<SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="true" UseProxyTypes="false" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)">
<Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
</SGen>
当前错误是:
无法反序列化类型'DummyProject.DummyClass',因为它包含没有公共setter的属性'Sequence'。
我尝试过: 1.现在,如果我取出内部setter,我在生成DummyProject.XmlSerializer方面没有任何问题。
我错过了什么吗?
我的assemblyinfo.cs不包含这个缺陷中列出的一个:
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
InternalsVisibleTo有问题吗?
基于这篇文章,即使使用内部setter,SGen仍然可以生成xml序列化程序集。
SGEN, InternalsVisibleTo and assembly signing
答案 0 :(得分:0)
我认为Joe可能找到了解决方案:
&#34;在InternalsVisibleTo属性中,您需要指定完整 公钥,而不仅仅是公钥令牌。
查看类似问题的答案以及此MSDN文章以获取信息 关于如何获得公钥。&#34;
<强>参考强>