2016-08-22 4 views
0

C#에서 개체를 serialize하고 deserialize하는 계약을 맺고 있으며 내 컴퓨터에서 완벽하게 작동합니다. 기계 사이에 약간의 차이가있을 수 있어야하지만 -이 이해하기 딱하다deserialization은 내 PC에서 작동하지만 다른 컴퓨터에서는 작동하지 않습니다.

<?xml version="1.0" encoding="utf-16"?> 
<DataImportConfiguration xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyCompany.MyModule"> 
    <Comment>59</Comment> 
    <Delimiter>44</Delimiter> 
    <DisplayType>Round</DisplayType> 
    <Escape>34</Escape> 
    <ForwardOnly>false</ForwardOnly> 
    <HasHeaders>true</HasHeaders> 
    <IgnoreEmptyValues>true</IgnoreEmptyValues> 
    <ImportDataDescription>Price List Data</ImportDataDescription> 
    <ImportDataFileName></ImportDataFileName> 
    <ImportDataType>MappedCSV</ImportDataType> 
    <Passes> 
     <DataImportPass z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
      <ConditionalSetters> 
       <ConditionalDataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>EnteredBy</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Condition_x003E_k__BackingField>RecordDoesNotExist</_x003C_Condition_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>AutoImported</_x003C_Value_x003E_k__BackingField> 
       </ConditionalDataSetter> 
       <ConditionalDataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>EnteredOn</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Condition_x003E_k__BackingField>RecordDoesNotExist</_x003C_Condition_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>GetDate() </_x003C_Value_x003E_k__BackingField> 
       </ConditionalDataSetter> 
       <ConditionalDataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>LastModifiedBy</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Condition_x003E_k__BackingField>RecordAlreadyExists</_x003C_Condition_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>AutoImported</_x003C_Value_x003E_k__BackingField> 
       </ConditionalDataSetter> 
       <ConditionalDataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>LastModifiedOn</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Condition_x003E_k__BackingField>RecordAlreadyExists</_x003C_Condition_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>GetDate() </_x003C_Value_x003E_k__BackingField> 
       </ConditionalDataSetter> 
      </ConditionalSetters> 
      <ListTypeId>14</ListTypeId> 
      <LookupSetters /> 
      <Mappings> 
       <DataMapping> 
        <_sourceAttemptsList> 
         <SourceAttempt> 
          <_x003C_SourceNames_x003E_k__BackingField  xmlns:d8p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
           <d8p1:string>Part No.</d8p1:string> 
          </_x003C_SourceNames_x003E_k__BackingField> 
         </SourceAttempt> 
        </_sourceAttemptsList> 
        <_x003C_DefaultValue_x003E_k__BackingField> </_x003C_DefaultValue_x003E_k__BackingField> 
        <_x003C_Precision_x003E_k__BackingField>Optional</_x003C_Precision_x003E_k__BackingField> 
        <_x003C_Separator_x003E_k__BackingField>  </_x003C_Separator_x003E_k__BackingField> 
        <_x003C_TargetName_x003E_k__BackingField>ItemCode</_x003C_TargetName_x003E_k__BackingField> 
       </DataMapping> 
       <DataMapping> 
        <_sourceAttemptsList> 
         <SourceAttempt> 
          <_x003C_SourceNames_x003E_k__BackingField  xmlns:d8p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
           <d8p1:string>Order Code</d8p1:string> 
          </_x003C_SourceNames_x003E_k__BackingField> 
         </SourceAttempt> 
        </_sourceAttemptsList> 
        <_x003C_DefaultValue_x003E_k__BackingField> </_x003C_DefaultValue_x003E_k__BackingField> 
        <_x003C_Precision_x003E_k__BackingField>Optional</_x003C_Precision_x003E_k__BackingField> 
        <_x003C_Separator_x003E_k__BackingField>  </_x003C_Separator_x003E_k__BackingField> 
        <_x003C_TargetName_x003E_k__BackingField>Barcode</_x003C_TargetName_x003E_k__BackingField> 
       </DataMapping> 
       <DataMapping> 
        <_sourceAttemptsList> 
         <SourceAttempt> 
          <_x003C_SourceNames_x003E_k__BackingField  xmlns:d8p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
           <d8p1:string>Description</d8p1:string> 
          </_x003C_SourceNames_x003E_k__BackingField> 
         </SourceAttempt> 
        </_sourceAttemptsList> 
        <_x003C_DefaultValue_x003E_k__BackingField> </_x003C_DefaultValue_x003E_k__BackingField> 
        <_x003C_Precision_x003E_k__BackingField>Optional</_x003C_Precision_x003E_k__BackingField> 
       <_x003C_Separator_x003E_k__BackingField>  </_x003C_Separator_x003E_k__BackingField> 
        <_x003C_TargetName_x003E_k__BackingField>SalesDescription</_x003C_TargetName_x003E_k__BackingField> 
       </DataMapping> 
       <DataMapping> 
        <_sourceAttemptsList> 
         <SourceAttempt> 
          <_x003C_SourceNames_x003E_k__BackingField xmlns:d8p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
           <d8p1:string>Sale Price</d8p1:string> 
          </_x003C_SourceNames_x003E_k__BackingField> 
         </SourceAttempt> 
        </_sourceAttemptsList> 
        <_x003C_DefaultValue_x003E_k__BackingField> </_x003C_DefaultValue_x003E_k__BackingField> 
        <_x003C_Precision_x003E_k__BackingField>Optional</_x003C_Precision_x003E_k__BackingField> 
        <_x003C_Separator_x003E_k__BackingField>  </_x003C_Separator_x003E_k__BackingField> 
        <_x003C_TargetName_x003E_k__BackingField>SalePrice</_x003C_TargetName_x003E_k__BackingField> 
       </DataMapping> 
      </Mappings> 
      <Name>Items</Name> 
      <Parent i:nil="true" /> 
      <Passes /> 
      <Precision>Required</Precision> 
      <Setters> 
       <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>AssetAccountId</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>6</_x003C_Value_x003E_k__BackingField> 
       </DataSetter> 
       <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>COGSAccountId</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>9</_x003C_Value_x003E_k__BackingField> 
       </DataSetter> 
       <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>ItemClassificationId</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>2</_x003C_Value_x003E_k__BackingField> 
      </DataSetter> 
      <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>ItemGroupId</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>-1</_x003C_Value_x003E_k__BackingField> 
       </DataSetter> 
       <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>Keywords</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField> </_x003C_Value_x003E_k__BackingField> 
       </DataSetter> 
       <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>NormalTaxCodeId</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>2</_x003C_Value_x003E_k__BackingField> 
       </DataSetter> 
       <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>SalesAccountId</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>22</_x003C_Value_x003E_k__BackingField> 
       </DataSetter> 
       <DataSetter> 
        <_x003C_ColumnName_x003E_k__BackingField>UnitOfMeasureId</_x003C_ColumnName_x003E_k__BackingField> 
        <_x003C_Value_x003E_k__BackingField>1</_x003C_Value_x003E_k__BackingField> 
       </DataSetter> 
      </Setters> 
     </DataImportPass> 
    </Passes> 
    <PreserveSpaces>false</PreserveSpaces> 
    <ProgressUnitType>CountOfTotal</ProgressUnitType> 
    <Quote>34</Quote> 
</DataImportConfiguration> 

: 여기

Unable to deserialize the S:\PriceList.xml

The system returned the message:

Error in line 20 position 19. 'EndElement' 'ConditionalDataSetter' from namespace ' http://schemas.datacontract.org/2004/07/MyCompany.MyModule ' is not expected. Expecting element 'Xb45L0rsD'.

은 XML이다 : 그러나, 고객의 컴퓨터에서 다음과 같은 오류가 발생합니다 무엇을 어디에서 찾을 수 있습니까?

  • 은 응용 프로그램이나 모듈 버전 문제
  • 가없는 있는지 확인하기 위해 검사 닷넷 버전 문제가 있지 않은지 확인하기 위해 검사 : 나는 해결책을 찾기 위해 내 시도에서 다음을 수행 한
  • 은 (빨대에 쥐고, 나도 알아!) UTF-8 대신 UTF-16을 시도
  • 이에

어떤 제안이나 조언이 매우 극명하게 될 것이다 네임 스페이스 덤비는했습니다.

+0

노트 패드가있는 파일 열기. 그런 다음 SaveAs를 수행하고 두 시스템의 파일 인코딩을 확인하십시오. 메모장에는 ANSI, UTF-8, 유니 코드 옵션이 있습니다. – jdweng

+0

유감스럽게도 아무런 차이가 없었습니다. 다른 제안? – oldcoder

+0

좋은 기계에서 작동하는 인코딩은 무엇입니까? – jdweng

답변

0

이 코드는 매우 간단합니다. 오버 코드 코드 난독 화가 원인이었습니다. 고객 기계의 릴리스 버전은 속성 이름에 영향을 미쳤으므로 문제를 일으키고있었습니다.

의도적으로 dll의 보호되지 않은 복사본을 고객의 컴퓨터에로드 한 다음이를 모두 예상대로 정확하게로드함으로써이를 증명했습니다. 내 앞에

옵션은 지금 :

  1. 변경이 난처
  2. 은 내가 할 수있는
  3. 아무것도 다른 XML 파일을 생성
  4. 당황 이전 당황하지 않기로 결정 초기 설정 ...

답변을 찾았을 때 jdweng이 내 생각을 집중하는 데 도움이 된 답변을 주셔서 감사합니다.

관련 문제