2
respostas

Xamarin no Visual Studio

Olá amigos,

Eu comprei ontem o curso e assim como outro aluno postou em outro tópico no fórum alguns dias atrás, eu também me surpreendi muito pelo fato do terem gravado somente no Xamarin Studio(Mac) e não ter nenhuma referencia no Visual Studio(Windows). Mas decidi acompanhar o curso no Visual Studio mesmo assim e consegui progredir bem até o capítulo 4 - Aula 2 - Sobre persistência de dados. Lá consegui baixar via "NuGet Package Manager" o Package do SQLite-PCL conforme instrução professor Renan, mas infelizmente quando tento salvar a lista no banco de dados o aplicativo simplesmente fecha no mac e no android não tem o exemplo até a aula que eu assisti.

A única pista que tenho é que existe um problema de diferença de versões na implementação da interface ISQLite no projeto Nuticao.IOS e no projeto C#.

Erro: Argument type 'string [mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=...]' is not assignable to parameter type 'string [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=...]'

Que ocorre na variável path da linha "return new SQLiteConnection(path);" do método "GetConnection()" na classe que implenta a interface "ISQLite" no projeto .IOS.

Gostaria de saber se possuem alguma previsão de gravação do curso em VS ou pelo menos um guia para Windows bem como as versões corretas que devemos utilizar de cada aplicativo?

No aguardo,

Guilherme.

2 respostas

Olá Guilherme, quando o curso foi gravado a microsoft não tinha comprado o Xamarin, por isso gravamos no Mac e não focamos no visual studio, temos planos de atualizar esse curso sim e provavelmente utilizando o visual studio. Sobre o erro ao usar o SQLite, aconteceu alguma exception? se sim você pode colar ela aqui para entender melhor o que rolou?

Abraços e bons estudos

Renan, o Erro é o seguinte:

Argument type 'string [mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=...]' is not assignable to parameter type 'string [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=...]'

ele dá na linha: return new SQLiteConnection(path);

Eu tenho quase certeza que a versão do .net do projeto Portable está diferente da versão do .net do projeto .ios, mas não tenho como atualizar a versão do .net do projeto .ios, se quiser posso te mandar todo o fonte.

using System;
using System.IO;
using Nutri.Data;
using SQLite;
using Xamarin.Forms;
using Nutri.iOS.Data;

[assembly: Dependency(typeof(SQLite_ios))]
namespace Nutri.iOS.Data
{
    public class SQLite_ios : ISQLite
    {
        public SQLite_ios()
        {
        }

        public SQLiteConnection GetConnection()
        {
            const string fileName = "Meals.db3";
            string documents = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            string path = Path.Combine(documents, "..", "Library", fileName); //.. sobe um nível da pasta Documents e salva o banco na pasta library...

            return new SQLiteConnection(path);
        }
    }
}