Como faço para obter NAnt para usar o novo compilador VB9 para aplicações .NET 2.0?
-
03-07-2019 - |
Pergunta
Como posso saber NAnt para usar o mesmo compilador VB VS2008 usos quando ele cria .NET 2.0 de metas de aplicações?
Eu mudei uma aplicação web para VS2008 back-direcionados para .NET 2.0. Eu posso correr NAnt (0.85rc4, 0,85, e 0.86b1) muito bem uma vez que eu fazer isso. Quando tento usar algum da sintaxe VB9, que ainda compila apenas multa de volta para um binário .NET 2.0 no VS2008, NAnt recebe o tipo de erro de compilação que você obteria se você tentou fazer a nova sintaxe no VS2005 (onde ele não era 't suportado).
Em caso de ajuda, aqui é uma versão simplificada do que estou tentando, apenas um delegado anônimo simples que funciona muito bem até que eu tente usar NAnt para construir o aplicativo em vez de VS2008 2.0.
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
EDIT: A menos que alguém pode pensar em uma razão para não, a configuração atual no meu arquivo de construção é isso (desde que eu na verdade quero um aplicativo .NET 2.0, apenas um gerado por um mais robusto compilador VB):
<property name="nant.settings.currentframework" value="net-2.0"/>
Solução 2
eu estava sendo um pouco a literal em minhas expectativas de NAnt. Desde que eu estava usando NAntContrib para executar msbuild sobre os projetos, eu queria que o quadro net-3.5 para NAnt. MSBuild e o arquivo de projeto cuidar do back-alvo do projeto para .NET 2.0. Eu era capaz de levar o meu delegado VB anônima, compilá-lo para 3,5 e soltar o direito DLL gerado em uma máquina com apenas .NET 2.0 e funcionou muito bem.
Basta definir o projeto para compilar para .NET 2.0: Propriedades do projeto -> Compile [Tab] -> Advanced Compile Options ... -> quadro Target (todas as configurações): .NET Framework 2.0
... e dizer NAnt para assumir cegamente net-3.5:
<property name="nant.settings.currentframework" value="net-3.5"/>
Outras dicas
Gostaria de saber se você tem que mudar o estrutura que NAnt está em execução abaixo.
Além disso, olhar para o href="http://nantcontrib.sourceforge.net/" rel="nofollow noreferrer"> NAntContrib projeto . Que tem a tarefa MSBuild. Nós usamos isso para construir nossos projetos de 2008, onde usamos o açúcar sytax extravagante como o que quiser, até 2,0 assembléias. Uma coisa que tinha que fazer era entretanto substituir o MSBuild.exe na pasta C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 com um que encaminha o pedido para o 3.0 MSBuild.exe
Aqui está o código que usamos para substituir MSBuild.exe no caminho 2.0. Não me lembro onde eu tenho esse código. Tentei encontrá-lo online, mas não pode.
Construir isso MSBuild.exe e substituir o seu 2.0 um com este.
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;
}
}
}