سؤال

بعد تغيير دليل الإخراج لمشروع الاستوديو المرئي، بدأ الفشل في الإنشاء بسبب خطأ يشبه إلى حد كبير:

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\sgen.exe /assembly:C:\p4root\Zantaz\trunk\EASDiscovery\EASDiscoveryCaseManagement\obj\Release\EASDiscoveryCaseManagement.dll /proxytypes /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EasDiscovery.Common\target\win_x32\release\results\EASDiscovery.Common.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EasDiscovery.Export\target\win_x32\release\results\EASDiscovery.Export.dll /reference:c:\p4root\Zantaz\trunk\EASDiscovery\ItemCache\target\win_x32\release\results\EasDiscovery.ItemCache.dll /reference:c:\p4root\Zantaz\trunk\EASDiscovery\RetrievalEngine\target\win_x32\release\results\EasDiscovery.RetrievalEngine.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\EASDiscoveryJobs\target\win_x32\release\results\EASDiscoveryJobs.dll /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Shared.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.Misc.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinChart.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinDataSource.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinDock.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinEditors.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinGrid.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinListView.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinMaskedEdit.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinStatusBar.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinTabControl.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinToolbars.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.UltraWinTree.v8.1.dll" /reference:"C:\Program Files\Infragistics\NetAdvantage for .NET 2008 Vol. 1 CLR 2.0\Windows Forms\Bin\Infragistics2.Win.v8.1.dll" /reference:"C:\Program Files\Microsoft Visual Studio 8\ReportViewer\Microsoft.ReportViewer.Common.dll" /reference:"C:\Program Files\Microsoft Visual Studio 8\ReportViewer\Microsoft.ReportViewer.WinForms.dll" /reference:C:\p4root\Zantaz\trunk\EASDiscovery\PreviewControl\target\win_x32\release\results\PreviewControl.dll /reference:C:\p4root\Zantaz\trunk\EASDiscovery\Quartz\src\Quartz\target\win_x32\release\results\Scheduler.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.DirectoryServices.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /compiler:/delaysign- 
    Error: The specified module could not be found. (Exception from HRESULT: 0x8007007E)
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1902,9): error MSB6006: "sgen.exe" exited with code 1.

لقد قمت بتغيير دليل الإخراج إلى target/win_x32/release/results ولكن يبدو أن المسار في sgen لم يتم تحديثه.يبدو أنه لا توجد إشارة في المشروع إلى المسار الذي تم تمريره إلى sgen لذا فأنا غير متأكد من كيفية إصلاحه.كحل بديل، قمت بتعطيل إنشاء التسلسل ولكن سيكون من الجيد إصلاح المشكلة الأساسية.هل رأى أحد آخر هذا؟

هل كانت مفيدة؟

المحلول

يرى msdn للحصول على خيارات sgen.exe [لديك سطر الأوامر، يمكنك اللعب به يدويًا...احذف .XmlSerializers.dll أو استخدم /force رغم ذلك]

لقد صادفت اليوم أيضًا كيفية القيام بالمزيد حدد خيارات sgen يدويًا.أردت أن لا يستخدم هذا المفتاح /proxy، ولكن يبدو أنه يسمح لك بتحديد دليل الإخراج.لا أعرف ما يكفي عن msbuild لجعله رائعًا، ولكن هذا يجب أن يساعدك على البدء [افتح .csproj/.vbproj في محرر الاستوديو غير المرئي الذي تختاره، وانظر إلى الأسفل ويجب أن تكون قادرًا على معرفة كيفية القيام بذلك /أين يذهب هذا]

[تم ضبط UseProxyTypes على الكود أدناه على "صحيح" من أجل راحتك]

<Target Name="GenerateSerializationAssembliesForAllTypes"
  DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource"
  Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)"
  Outputs="$(OutputPath)$(_SGenDllName)">
    <SGen BuildAssemblyName="$(TargetFileName)"
      BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)"
      ShouldGenerateSerializer="true" UseProxyTypes="true"
      KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)"
      DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)">
        <Output TaskParameter="SerializationAssembly"
          ItemName="SerializationAssembly" />
     </SGen>
</Target>
<!-- <Target Name="BeforeBuild">
</Target> -->
<Target Name="AfterBuild"
  DependsOnTargets="GenerateSerializationAssembliesForAllTypes">
</Target>

نصائح أخرى

إذا كنت تواجه هذه المشكلة أثناء إنشاء مشروع VS.NET الخاص بك في وضع الإصدار، فإليك الحل:

انتقل إلى خصائص المشروع وانقر فوق علامة التبويب "إنشاء" وقم بتعيين قيمة القائمة المنسدلة "إنشاء مجموعة التسلسل" على "إيقاف".

SGEN.EXE هو "مولد Serializer XML ينشئ مجموعة تسلسل XML للأنواع في مجموعة محددة من أجل تحسين أداء بدء التشغيل لـ XmlSerializer عندما يتسلسل أو يستحق الكائنات من الأنواع المحددة." ((MSDN)

لم أر هذه المشكلة بالتحديد، ولكن مؤخرًا بالنسبة لنا "C1001:لقد حدث خطأ داخلي في برنامج التحويل البرمجي "تم إصلاح نوع العطل من cl.exe بعد تثبيت بعض تحديثات أمان Windows العشوائية وغير ذات الصلة (أو هكذا اعتقدنا).

كنا نعلم أن الكود لم يتسبب في تعطل برنامج التحويل البرمجي على الأجهزة الأخرى التي تستخدم نفس الإصدار ومستوى حزمة الخدمة من Visual Studio، ولكننا كنا متمسكين بالقش عندما جربنا تحديثات أمان Windows.

يبدو الأمر معقولًا بدرجة كافية بالنسبة لي، إلا إذا كان هناك شيء يفرض حدًا أقصى يبلغ 4096 حرفًا [أدرجت 4020 حرفًا]

يبدو الحد 4096 بالنسبة لي سخيفًا بعض الشيء، سيكون 2048 أو 32767 أو 8192 من الأشياء التي وجدتها من خلال البحث عن حدود سطر الأوامر.

لقد واجهت هذه المشكلة عندما أشرت إلى تجميع في مشروع موقع ويب في GAC الذي تم إلغاء تثبيته منذ ذلك الحين، ولسبب ما أدى هذا المرجع إلى إنشاء تجميع تسلسلي، واختنق sgen على المرجع (نظرًا لأنه لم يعد موجودًا) .بعد إزالة المرجع وتحويل إنشاء تجميع التسلسل إلى إيقاف التشغيل، لم تعد لدي المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top