Создает ли 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>
Current error is:
Невозможно десериализовать тип DummyProject.DummyClass, поскольку он содержит свойство Sequence, у которого нет открытого установщика.
Что я пробовал: 1. Теперь, если я извлечу внутренний установщик, у меня не будет проблем с созданием DummyProject.XmlSerializer.
Я что-то упускаю?
Мой файл assemblyinfo.cs не содержит этого, как указано в одной из ловушек:
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
- Я также пробовал подписывать свои сборки и изменять InternalsVisibleTo, чтобы включить открытый ключ, но все равно получаю ту же ошибку.
Это проблема с InternalsVisibleTo?
Основываясь на этом сообщении, SGen по-прежнему должен иметь возможность генерировать сборку сериализации xml даже с помощью внутреннего установщика.
SGEN, InternalsVisibleTo и подписание сборки
- Я не использовал шаги пост-сборки для создания сборки сериализации xml. Я сделал это в командной строке разработчика, и сборка успешно создана для классов без внутренних установщиков. Теперь я скопировал эту сборку в свой проект и изменил свой установщик свойств на внутренний. У меня возникла ошибка во время сериализации из-за внутреннего установщика.
Конечно, я добавил InternalsVisibleTo в свой AssemblyInfo.cs ..
sgen
Visual Studio 2013 также генерирует ошибки для классов, помеченных какinternal
- person Pressacco   schedule 09.05.2014