مساحة الاسم المعلنة F# غير متوفرة في مشروع C# أو مرئية من خلال متصفح الكائنات

StackOverflow https://stackoverflow.com/questions/208008

  •  03-07-2019
  •  | 
  •  

سؤال

مساحة الاسم المعلنة F# غير متوفرة في مشروع C# أو مرئية من خلال متصفح الكائنات.

لقد قمت ببناء مشروع مكتبة F# عادي، ولكن حتى بعد إنشاء المشروع وإحالته إلى مشروع C# الخاص بي، لا أستطيع الوصول إلى مساحة الاسم المطلوبة.

كما أنني غير قادر على رؤيته في متصفح الكائنات، حيث تظهر لي رسالة خطأ تخبرني أنه لم يتم إنشاؤه.أنا أعمل على إصدار سبتمبر، هل يمكن لأحد أن يشير إلى خطأي؟

F# الإصدار 1.9.6.0

(6) التحرير:لقد أدى الرجوع إلى ملف dll مباشرة إلى حل مشكلتي، والرجوع إلى المشروع يسمح لي بالتجميع ولكن الذكاء لا يعمل.عندما يتم الرجوع مباشرة إلى ملف dll فإن الذكاء يعمل بشكل مثالي.


هذا هو الكود الموجود في ملف .fs

#light

namespace Soilsiu.Core 

module public Process =
    open System.Xml.Linq

    let private xname (tag:string) = XName.Get(tag)
    let private tagUrl (tag:XElement) = let attribute = tag.Attribute(xname "href")
                                        attribute.Value
    let Bookmarks(xmlFile:string) = 
        let xml = XDocument.Load(xmlFile)
        xml.Elements <| xname "A" |> Seq.map(tagUrl)

    let PrintBookmarks (xmlFile:string) =     
        let list = Bookmarks(xmlFile)
        list |> Seq.iter(fun u -> printfn "%s" u)

(5) تحرير:هل يمكن أن يكون ReSharper 4.0 هو المشكلة؟

(4) تحرير:عندما أقول أن متصفح الكائنات غير قادر على قراءة التجميع الناتج، أعني أنه عندما أحاول فتح التجميع في متصفح الكائنات، أحصل على خطأ يخبرني أن المشروع لم يتم إنشاؤه بعد.مرة أخرى أستطيع قراءة التجميع باستخدام العاكس.

(3) تحرير:يمكن للعاكس تفكيك ملف dll ولكن متصفح الكائنات غير قادر على قراءته.

(2) تحرير:لقد قمت بترقية إصدار F# الخاص بي إلى 1.9.6.2 ولا تزال نفس النتيجة

(1) تحرير:لقد تمكنت من تفكيك ملف dll إلى C# وأحصل على:(يبدو أن كل شيء على ما يرام هنا)

namespace Soilsiu.Core
{
    [CompilationMapping(7)]
    public static class Crawler

    [CompilationMapping(7)]
    public static class Process
}

[CompilationMapping(7)]
public static class Process
{
    // Methods
    static Process();
    public static IEnumerable<string> Bookmarks(string xmlFile);
    public static void PrintBookmarks(string xmlFile);
    internal static string tagUrl(XElement tag);
    internal static XName xname(string tag);

    // Nested Types
    [Serializable]
    internal class clo@13 : FastFunc<XElement, string>
    {
        // Methods
        public clo@13();
        public override string Invoke(XElement tag@9);
    }

    [Serializable]
    internal class clo@17 : FastFunc<string, Unit>
    {
        // Methods
        public clo@17();
        public override Unit Invoke(string u);
    }
}
هل كانت مفيدة؟

المحلول

وماذا لو كنت مرجع DLL تنتج مباشرة (أي ليس عن طريق مرجع مشروع، ولكن عن طريق مرجع ملف)؟

نصائح أخرى

وربما التحسس وافسدت فقط؟ ما الخطأ مترجم تحصل عند محاولة استخدامه في C #؟ عندما تقول "متصفح كائن غير قادر على قراءتها" ماذا يعني ذلك؟

لما يستحق، وأضفت هذا المشروع # مكتبة F، المشار إليها (مشروع) من التطبيق C # وحدة التحكم، وكان قادرا على استخدامها. لم التحسس لا تعمل في البداية على الرغم من. (وكان لإعادة بناء).

إذا يمكنك جعل إعدادها في صورة جاهزة الصلبة، أنا أقترح إرساله عبر البريد الإلكتروني إلى F # البق الاسم المستعار (fsbugs).

وحاولت نفس الشيء. ويبدو وكأن Visual Studio ثم Resharper 4.0 لا يفهم F # لسبب ما. إذا كنت تجاهل البحر الأحمر من النص وعدم وجود التحسس، وسوف جمع ما يرام.

يحاول

  1. تأكد من أن مشروع C# يستهدف FULL .NET (وليس ملف تعريف العميل).

  2. أضف مراجع للتجميعات في مشروع C# والتي يستخدمها مشروع F#.

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