คำถามติดแท็ก .net-assembly

7
วัตถุประสงค์ของการสแต็คคืออะไร? ทำไมเราต้องการมัน?
ดังนั้นฉันกำลังเรียนรู้ MSIL ในขณะนี้เพื่อเรียนรู้การดีบักแอปพลิเคชัน C # .NET ของฉัน ฉันสงสัยอยู่เสมอ: จุดประสงค์ของกองคืออะไร เพียงใส่คำถามของฉันในบริบท: เหตุใดจึงมีการถ่ายโอนจากหน่วยความจำไปกองหรือ "โหลด" ในทางกลับกันเหตุใดจึงมีการถ่ายโอนจากสแต็คไปยังหน่วยความจำหรือ "การจัดเก็บ" ทำไมไม่เพียงแค่วางมันทั้งหมดไว้ในหน่วยความจำ? เป็นเพราะมันเร็วกว่าไหม เป็นเพราะแรมใช้หรือไม่ เพื่อประสิทธิภาพ? ฉันพยายามเข้าใจสิ่งนี้เพื่อช่วยให้ฉันเข้าใจรหัสCILอย่างลึกซึ้งยิ่งขึ้น
320 c#  .net  vb.net  cil  .net-assembly 

30
ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Newtonsoft.Json' หรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความที่แสดงออกไม่ตรงกับการอ้างอิงประกอบ
สิ่งที่ฉันได้ลองหลังจากค้นหา: ใน Web.Config ให้ผลผูกพันกับเวอร์ชั่นเก่า: <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" /> </dependentAssembly> แก้ไขไฟล์. csproj ของฉันเพื่อให้แน่ใจว่ามี Newtonsoft อ้างอิงเดียวเท่านั้น <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <SpecificVersion>False</SpecificVersion> <Private>True</Private> </Reference> ค้นหาคอมพิวเตอร์ของฉันสำหรับทุก Newtonsoft.Json.dll และลบทุกรุ่นที่ไม่ใช่ 6.0.1 และลบเนื้อหาของโฟลเดอร์ temp ของฉัน ซ่อมแซม / ติดตั้งแพคเกจใหม่ในคอนโซลตัวจัดการ nuget มันประสบความสำเร็จในการสร้าง แต่ได้รับข้อผิดพลาดเมื่อไปที่เว็บไซต์ แก้ไข ตกลงดังนั้นฉันพยายามติดตั้งใหม่เหมือนทุกแพ็คเกจ nuget และดูเหมือนว่าจะเพิ่มรุ่น newtonsoft.json.dll รุ่น 4.5 …

10
ฉันจะค้นหา PublicKeyToken สำหรับ dll เฉพาะได้อย่างไร
ฉันต้องสร้างผู้ให้บริการใหม่ในไฟล์ web.config ที่มีลักษณะดังนี้: <membership defaultProvider="AspNetSqlMemProvider"> <providers> <clear/> <add connectionStringName="TRAQDBConnectionString" applicationName="TRAQ" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" name="AspNetSqlMemProvider" type="System.Web.Security.SqlMembershipProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> </providers> </membership> อย่างไรก็ตามฉันได้รับข้อผิดพลาดรันไทม์ที่แจ้งว่าไม่สามารถโหลดชุดประกอบนี้และฉันคิดว่าเป็นเพราะฉันมี PublicKeyToken ผิด ฉันจะค้นหา PublicKeyToken เพื่อประกอบได้อย่างไร อีกทางหนึ่งฉันจะผิดทางอย่างสิ้นเชิงกับเรื่องนี้?

6
ฉันจะรับแอสเซมบลีเวอร์ชันการดำเนินการได้อย่างไร
ฉันพยายามรับรุ่นแอสเซมบลีที่กำลังดำเนินการใน C # 3.0 โดยใช้รหัสต่อไปนี้: var assemblyFullName = Assembly.GetExecutingAssembly().FullName; var version = assemblyFullName .Split(',')[1].Split('=')[1]; มีวิธีอื่นที่เหมาะสมในการทำเช่นนั้นหรือไม่?
169 c#  .net  .net-assembly 

5
แนวทางปฏิบัติที่ดีที่สุด / คำแนะนำสำหรับการบำรุงรักษาหมายเลขรุ่นแอสเซมบลี
ฉันกำลังมองหาพอยน์เตอร์คำแนะนำและแม้แต่การเขียนตามคำบอกเกี่ยวกับวิธีจัดการหมายเลขเวอร์ชันแอสเซมบลีที่ต่างกันสามแบบสำหรับแอสเซมบลี. NET เวอร์ชันผลิตภัณฑ์นั้นง่ายที่สุดเนื่องจากตามปกติแล้วธุรกิจของคุณจะถูกกำหนด จากนั้นดูเหมือนว่าเวอร์ชันไฟล์จะใช้สำหรับการกำหนดเวอร์ชันระหว่างการปรับใช้ซึ่งมีการใช้เวอร์ชันแอสเซมบลีที่แท้จริงเมื่อจัดส่งเท่านั้น ตอนนี้ฉันแค่มองหาวิธีง่ายๆในการติดฉลากการทดสอบและการบำรุงรักษาของชุดประกอบที่ไม่มีใครพึ่งพาดังนั้นฉันจึงกำลังมองหาการสร้างและการแก้ไขที่เพิ่มขึ้นโดยอัตโนมัติในรุ่นของไฟล์และสำหรับรุ่นสุดท้าย เวอร์ชันไฟล์เป็นเวอร์ชันแอสเซมบลี ผลิตภัณฑ์นี้ใช้งานในการผลิต แต่ยังอยู่ระหว่างการพัฒนา - คุณรู้ - หนึ่งใน บริษัท เล็ก ๆ เหล่านั้นไม่มีสถานการณ์โครงสร้างพื้นฐานควบคุมการเปลี่ยนแปลง

5
จะดูโฟลเดอร์และไฟล์ใน GAC ได้อย่างไร?
ฉันต้องการที่จะดูโฟลเดอร์และโฟลเดอร์ย่อยในGAC นอกจากนี้ยังต้องการทราบเกี่ยวกับการเพิ่มและลบจากGAC ในการติดตั้งเราเขียนบรรทัดนี้ในพรอมต์คำสั่งโดยเปิด Visual Studio command prompt: - gacutil /i [assembly path] แต่ในการถอนการติดตั้งเราต้องการเพียง: - gacutil /u [assembly name] ทำไม?
109 .net  .net-assembly  gac 

4
วิธีป้องกัน ReflectionTypeLoadException เมื่อเรียก Assembly.GetTypes ()
ฉันกำลังพยายามสแกนแอสเซมบลีสำหรับประเภทที่ใช้อินเทอร์เฟซเฉพาะโดยใช้โค้ดที่คล้ายกับสิ่งนี้: public List<Type> FindTypesImplementing<T>(string assemblyPath) { var matchingTypes = new List<Type>(); var asm = Assembly.LoadFrom(assemblyPath); foreach (var t in asm.GetTypes()) { if (typeof(T).IsAssignableFrom(t)) matchingTypes.Add(t); } return matchingTypes; } ปัญหาของฉันคือฉันได้รับReflectionTypeLoadExceptionเมื่อโทรasm.GetTypes()ในบางกรณีเช่นหากแอสเซมบลีมีประเภทที่อ้างถึงแอสเซมบลีซึ่งไม่สามารถใช้งานได้ในขณะนี้ ในกรณีของฉันฉันไม่สนใจประเภทที่ทำให้เกิดปัญหา ประเภทที่ฉันกำลังค้นหาไม่จำเป็นต้องมีชุดประกอบที่ไม่มีอยู่ คำถามคือเป็นไปได้ไหมที่จะข้าม / ละเว้นประเภทที่ทำให้เกิดข้อยกเว้น แต่ยังประมวลผลประเภทอื่น ๆ ที่มีอยู่ในชุดประกอบ

17
ไม่พบแอสเซมบลีที่มีข้อผิดพลาด OwinStartupAttribute
ข้อผิดพลาดนี้ เกิดข้อผิดพลาดต่อไปนี้ขณะพยายามโหลดแอป - ไม่พบชุดประกอบที่มี OwinStartupAttribute - ไม่พบประเภทหรือวิธีการที่ระบุ 'เท็จ' ลองระบุ Assembly หากต้องการปิดใช้งานการค้นพบการเริ่มต้น OWIN ให้เพิ่ม appSetting owin: AutomaticAppStartup ด้วยค่า "เท็จ" ใน web.config ของคุณ ในการระบุ OWIN startup Assembly, Class หรือ Method ให้เพิ่ม appSetting owin: AppStartup ด้วยคลาสเริ่มต้นที่มีคุณสมบัติครบถ้วนหรือชื่อวิธีการกำหนดค่าใน web.config ของคุณ ปรากฏบนหน้าจอของฉันในหน้าแสดงข้อผิดพลาดที่น่าเกลียดที่สุดเท่าที่เคยมีมาในประวัติศาสตร์ ฉันได้พยายามทำตามคำแนะนำบนหน้าโดยการใส่ owin: AutomaticAppStartup ใน config <appSettings > <add key="owin:AppStartup" value="false"></add> </appSettings> สิ่งนี้ไม่สามารถแก้ไขปัญหาได้ ข้อเสนอแนะใด ๆ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.