كيف يمكنني الحصول على نانت إلى استخدام جديد VB9 مترجم .NET 2.0 التطبيقات ؟

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

سؤال

كيف أقول نانت إلى استخدام نفس VB مترجم VS2008 يستخدم عندما يخلق .NET 2.0-استهداف التطبيقات ؟

لقد تحولت تطبيق ويب VS2008 العودة استهدفت إلى .NET 2.0.لا يمكن تشغيل نانت (0.85rc4, 0.85 ، 0.86b1) على ما يرام بمجرد أن أفعل هذا.عند محاولة استخدام بعض VB9 بناء الجملة التي لا تزال تجمع ما يرام مرة أخرى إلى .NET 2.0 ثنائي في VS2008, نانت يحصل نوع من خطأ ترجمة ستحصل إذا حاولت أن تفعل تركيب جديد في VS2005 (حيث لم تكن معتمدة).

في حالة أنه يساعد هنا هو نسخة مبسطة من ما أنا محاولة فقط بسيط مجهول مندوب يعمل بشكل رائع حتى وأنا أحاول أن استخدام نانت لبناء 2.0 التطبيق بدلا من VS2008.

Public Class SomeObject
    Public Name As String
End Class
Private SomeList As List(Of SomeObject) = SomeObject.GetAllSomeObjects()
Public Function FindFirstItemWithSimilarName(ByVal x As String) As SomeObject
    Return SomeList.Find(Function(p As SomeObject) p.Name.Contains(x))
End Function

تحرير: إلا إذا كان شخص ما يمكن أن نفكر في سبب عدم الإعداد الحالي في بناء الملف هذا (منذ أن كنت بالفعل تريد .NET 2.0 تطبيق واحد فقط ولدت قبل أكثر قوة VB مترجم):

<property name="nant.settings.currentframework" value="net-2.0"/>
هل كانت مفيدة؟

المحلول 2

كان يجري قليلا إلى حرفية في توقعاتي من نانت.منذ كنت تستخدم NAntContrib لتشغيل msbuild على المشاريع أريد صافي 3.5 إطار نانت.MSBuild و ملف المشروع تأخذ الرعاية من استهداف المشروع .NET 2.0.كنت قادرا على اتخاذ بلدي VB مجهول مندوب ، ترجمة ذلك إلى 3.5 وإسقاط إنشاء DLL على الجهاز فقط .NET 2.0 و ركض بخير.

ببساطة تعيين المشروع إلى جمع إلى .NET 2.0:خصائص المشروع -> ترجمة [tab] -> Advanced Compile Options...-> الهدف إطار (كل التشكيلات):.NET Framework 2.0

و أقول نانت عمياء نفترض net 3.5:

<property name="nant.settings.currentframework" value="net-3.5"/>

نصائح أخرى

وأتساءل عما إذا كان لديك إلى تغيير الإطار أن نانت يعمل تحت.

أيضا, النظر في NAntContrib المشروع.أن لديه MSBuild المهمة.نحن نستخدم هذه لبناء مشاريع سنة 2008 حيث نستخدم الهوى sytax السكر مثل ما تريد ، وصولا الى 2.0 الجمعيات.شيء واحد يجب القيام لو كان محل MSBuild.exe في C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 مع أن توجيه الطلب إلى 3.0 MSBuild.exe

هنا هو رمز نستخدم محل MSBuild.exe في 2.0 المسار.لا أستطيع أن أتذكر أين حصلت على هذا الكود.حاولت أن تجد على الانترنت ولكن لا يمكن.

بناء هذا MSBuild.exe و استبدال 2.0 مع هذا واحد.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;

namespace MSBuild
{
    public class Program
    {
        public static int Main(string[] args)
        {
            for (int argIndex = 0; argIndex < args.Length; argIndex++)
            {
                if (args[argIndex].Contains(" "))
                {
                    string quotedArg = string.Format("\"{0}\"", args[argIndex]);
                    args[argIndex] = quotedArg;
                }
            }

            string arguments = string.Join(" ", args);

            // HACK: I should probably change
            //       this to automaticlaly 
            //       determine the path

            Process process = Process.Start("C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe",arguments);

            process.WaitForExit();

            return process.ExitCode;

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