Arquivo

Archive for the ‘Problemas / Troubles’ Category

Build > Asp Net Core, Node, VSTS > unexpected end of file

Olá!

Ao criar uma build definition com Visual Studio Team Services (VSTS), ocorreu uma falha na etapa de publish, e venho aqui compartilhar a solução encontrada.

Setup:

  • Projeto ASP NET CORE
  • Agent Queuee: Hosted VS2017
  • JavaScriptServices (https://github.com/aspnet/JavaScriptServices/)
    • Server-side prerendering for universal (a.k.a. isomorphic) applications, where your Angular / React / etc. components are first rendered on the server, and then transferred to the client where execution continues
    • Webpack middleware so that, during development, any webpack-built resources will be generated on demand, without you having to run webpack manually or compile files to disk
    • Hot module replacement so that, during development, your code and markup changes will be pushed to your browser and updated in the running application automatically, without even needing to reload the page
    • Routing helpers for integrating server-side routing with client-side routing

Criei uma build definition para a camada de apresentação, com as seguintes etapas:

BuildDefinitionVstsEtapas

Ao executar o processo de build recebi o seguinte erro no processo de [ publish ]:


2017-09-25T15:51:15.6205662Z ##[section]Starting: Publish
2017-09-25T15:51:15.6205662Z ==============================================================================
2017-09-25T15:51:15.6205662Z Task : .NET Core
2017-09-25T15:51:15.6205662Z Description : Build, test, package, or publish a dotnet application, or run a custom dotnet command. For package commands, supports NuGet.org and authenticated feeds like Package Management and MyGet.
2017-09-25T15:51:15.6205662Z Version : 2.1.3
2017-09-25T15:51:15.6205662Z Author : Microsoft Corporation
2017-09-25T15:51:15.6205662Z Help : [More Information](https://go.microsoft.com/fwlink/?linkid=832194)
2017-09-25T15:51:15.6205662Z ==============================================================================
2017-09-25T15:51:16.3385534Z [command]"C:\Program Files\dotnet\dotnet.exe" publish d:\a\1\s\Tcs.Erp.UI.Web\Tcs.Erp.UI.Web.csproj --configuration release --output d:\a\1\a\Tcs.Erp.UI.Web
2017-09-25T15:51:17.8425717Z Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
2017-09-25T15:51:17.8425717Z Copyright (C) Microsoft Corporation. All rights reserved.
2017-09-25T15:51:17.8425717Z
2017-09-25T15:51:20.2386553Z Tcs.Erp.UI.Web -> d:\a\1\s\Tcs.Erp.UI.Web\bin\release\netcoreapp2.0\Tcs.Erp.UI.Web.dll
2017-09-25T15:51:45.6297302Z EXEC : npm ERR! tar.unpack unzip error d: \a\_temp\npm-3668-ce5239c6\registry.npmjs.org\typescript\-\typescript-2.4.1.tgz [d:\a\1\s\Tcs.Erp.UI.Web\Tcs.Erp.UI.Web.csproj]
2017-09-25T15:51:52.7841764Z npm ERR! Windows_NT 10.0.14393
2017-09-25T15:51:52.7841764Z npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
2017-09-25T15:51:52.7851759Z npm ERR! node v6.10.0
2017-09-25T15:51:52.7851759Z npm ERR! npm v3.10.10
2017-09-25T15:51:52.7851759Z npm ERR! code Z_BUF_ERROR
2017-09-25T15:51:52.7851759Z npm ERR! errno -5
2017-09-25T15:51:52.7851759Z
2017-09-25T15:51:52.7851759Z npm ERR! unexpected end of file
2017-09-25T15:51:52.7851759Z npm ERR!
2017-09-25T15:51:52.7851759Z EXEC : npm ERR! If you need help, you may report this error at: [d:\a\1\s\Tcs.Erp.UI.Web\Tcs.Erp.UI.Web.csproj]
2017-09-25T15:51:52.7851759Z npm ERR! <https://github.com/npm/npm/issues&gt;
2017-09-25T15:51:52.8351980Z
2017-09-25T15:51:52.8361795Z npm ERR! Please include the following file with any support request:
2017-09-25T15:51:52.8361795Z npm ERR! d:\a\1\s\Tcs.Erp.UI.Web\npm-debug.log
2017-09-25T15:51:52.8821822Z d:\a\1\s\Tcs.Erp.UI.Web\Tcs.Erp.UI.Web.csproj(36,5): error MSB3073: The command "npm install" exited with code -5.
2017-09-25T15:51:52.9151842Z ##[error]Error: C:\Program Files\dotnet\dotnet.exe failed with return code: 1
2017-09-25T15:51:52.9171845Z ##[error]Dotnet command failed with non-zero exit code on the following projects : d:\a\1\s\Tcs.Erp.UI.Web\Tcs.Erp.UI.Web.csproj
2017-09-25T15:51:52.9241833Z ##[section]Finishing: Publish

Ao procurar pelo erro no nosso amigo google, encontrei essa Issue no GitHub do npm:

https://github.com/npm/npm/issues/14394
Com a seguinte resposta:

Pasted_Image_25_09_17_13_34Então editei minha build definition, e inclui a seguinte tarefa antes do processo de [ publish ]

Pasted_Image_25_09_17_13_36

E voilà:

Pasted_Image_25_09_17_13_37Agora é só criar a [ release definition ].

🙂

Anúncios

AngularJs + Ui-Router – Controller sendo inicializado mais de uma vez

04 - 15 2 comentários

Desenvolvendo um frontend com angularjs, me deparei com um pequeno problema.

Contexto:

-> View que permite o usuário consultar o seus dados pessoais, e editá-los.

Controller:

-> Consome uma API /api/account/getdadosprofile, e atualiza a tela com os dados retornados.

Código abaixo: Configuração da minha rota utilizando plug-ins “ui-router” e “ocLazyLoad“.

.state("profile.account", {
            url: "/account",
            templateUrl: "views/profile/profile.account.html",
            data: { pageTitle: 'Minha Conta', pageSubTitle: 'dados da conta' },
            controller: "dadosUsuarioController",
            resolve: {
                deps: ['$ocLazyLoad', function ($ocLazyLoad) {
                    return $ocLazyLoad.load({
                        name: 'MyApp',
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
                        files: [
                            'js/controllers/dadosUsuarioController.js'
                        ]
                    });
                }]
            }
        })

Estou utilizando ui-router para fazer o roteamento das minhas views.

O data-bind estava funcionando corretamente na minha view, mas percebi utilizando as Developer Tools do Browser (F12), na aba Network, que estavam sendo executadas 4 requests para a API.

O problema disso? Tráfego desnecessário(e duplicado) de dados sendo feito entre client/server.

Investigando bastante a solução, passei pela documentação oficial do ui-router, e li artigos focados em ui-router, mas encontrei a resposta no seguinte post do StackOverflow:

http://stackoverflow.com/questions/15535336/combating-angularjs-executing-controller-twice

No stackOverflow a resposta/explicação se baseou no roteamento nativo do angularJs, mas percebi que isso se aplicava também no “ui-router”. A questão é: Quando especificamos o parâmetro “controller” na rota, esse controller é injetado automaticamente na minha view/template. Por não saber disso, eu declarava o controller manualmente na div.

<div ng-controller="dadosUsuarioController"> // motivo do controller ser executado 2 vezes
   // dessa forma a solução é: 1: remover a diretiva acima, 2: remover o parâmetro controller na sua rota.
</div>

Pessoal, em suma é isso, dúvidas/sugestões, enviem pelos comentários.

Abraço.

Editor de arquivos Razor muito lento no Visual Studio 2013 com Resharper 8, DevExpress 13.2

Quero compartilhar a solução para um problema que me atrapalhou bastante.

Consegui solucionar um problema de lentidão no Visual Studio, ao editar arquivos Razor .cshtml. Chegava ao ponto do cursor desaparecer enquanto editava o arquivo, de tão lento que estava.

Associei isso a um problema que tive ao atualizar o Windows 8 para 8.1 no notebook, pois era incompatível com o driver gráfico comutável do Dell 3540, e a partir disso desativei a Aceleração de Hardware do Visual Studio (não resolveu).

Identifiquei que a lentidão só ocorria com o ReSharper instalado. Desinstalando o Resharper a lentidão extrema desaparecia.

Pesquisei melhor na web até encontrar 2 links:

http://youtrack.jetbrains.com/issue/RSRP-401187

https://www.devexpress.com/Support/Center/Question/Details/Q554979

Aparentemente é um problema quando ReSharper e DevExpress estão instalados. Não uso CodeRush instalado.

Soluções:

* HotFix do DevExpress.

* Hotfix do Resharper.

* Apagar conteúdo da pasta c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\DevExpress\VSMenuIntegration\ (FUNCIONOU PRA MIM)

Unique Constraint – Entity Framework 6 – WTF

Iniciei um projeto em C# Windows Forms utilizando o Entity Framework 6 (última versão até o momento 05/01/2014).

Tenho um campo que armazena “e-mail”, e esse campo deve ser único na tabela.

Estou mapeando minhas classes utilizando FLUENT API.

e quando fui mapear a coluna E-MAIL fiquei assustado em descobrir que,

a versão 6 desse ORM  não tem esse recurso básico implementado na interface de mapeamento fluente.

Tem uma issue aberta no Codeplex para o tema:
https://entityframework.codeplex.com/workitem/57

Nesse momento reconsidero continuar o projeto em EF ou migrar urgentemente para NHIBERNATE que está anos-luz mais maduro.

Problema com Bind em ListPicker.SelectedIndex

Utilizando uma classe View Model para fazer um “one way” ou “two way” bind na propriedade SelectedIndex de um List Picker é levantada a seguinte exceção: “SelectedIndex must always be set to a valid value.”

Tomando como exemplo o seguinte cenário:

Código XAML:

<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <toolkit:ListPicker
        Grid.Row="0"
        x:Name="List1"
        SelectionChanged="Picker_SelectionChanged"
        SelectedIndex="{Binding PickerSelectedIndex, Mode=TwoWay}"
        ItemTemplate="{StaticResource PickerTemplate}"
        ItemsSource="{Binding MyList}"/>
</Grid>

E o código no DataContext da página:

 private ObservableCollection<MyClass> myList = null;
    public ObservableCollection<MyClass> MyList
    {
        get { return this.myList; }
        set
        {
            if (value != this.myList)
            {
                this.myList= value;
                NotifyPropertyChanged("MyList");

                this.PickerSelectedIndex = 0;
            }
        }
    }

    private int pickerSelectedIndex = 0;
    public int PickerSelectedIndex
    {
        get
        {
            return this.pickerSelectedIndex;
        }
        set
        {
            this.pickerSelectedIndex= value;
        }
    }

Solução:

Aparentemente, no processo de conversão do XAML em objeto, o ItemsSource deve aparecer antes da propriedade SelectedIndex, isso deve resolver o problema.

<toolkit:ListPicker
    Grid.Row="0"
    x:Name="List1"
    SelectionChanged="Picker_SelectionChanged"
    ItemTemplate="{StaticResource PickerTemplate}"
    ItemsSource="{Binding MyList}"
    SelectedIndex="{Binding PickerSelectedIndex, Mode=TwoWay}"/>

Atenção Desenvolvedores Windows Phone: Aplicativo publicado não aparece no Marketplace

01 - 12 2 comentários

Atenção desenvolvedores, se seu aplicativo recém publicado para Windows Phone não aparece no marketplace pt-BR mas já existem downloads de outros países…

Fique atento…

Aparentemente o marketplace trabalha com cache, e o cache do servidor no Brasil não é atualizado com frequência.

Mancada!!!

Vejam as provas de um caso ocorrido com meu amigo Rodrigo Bandeira, que lançou um app para Conversão de Moedas.
O aplicativo é direcionado para Português, mas só aparece no Marketplace versão en-US e não na versão pt-BR.

Link para Marketplace en-US: http://www.windowsphone.com/en-US/apps/c23b3599-d63c-42a3-afdf-ca052e35a888

Leia mais…

Problem: File upload with jQuery Mobile and ASP.NET MVC

09 - 11 2 comentários

Desenvolvendo um projeto utilizando jQuery Mobile me deparei com um problema:

Código da View:

@using (Html.BeginForm("Gravar", "Foto", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
            <div class="editor-label">Arquivo de foto</div>
            <div class="editor-field">

            </div>

                <div class="ui-block-a">@Html.ActionLink("Home", "Index", null, new {@data_role = "button"})</div>
                <div class="ui-block-b">Enviar</div>

        </div>
    </div>
}

Código da Action:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Gravar(HttpPostedFileBase arquivo)
{
    try
    {
        if (arquivo == null)
            throw new Exception("Foto não foi recebida!");

        // código para persistir arquivo no servidor

        return RedirectToAction("Index");
    }
    catch (Exception)
    {
        return Redirect("Error");
    }
}

Utilizando jQuery Mobile, sempre que o form é submetido, o arquivo para upload não é enviado junto ao form.
(arquivo é sempre null)

Encontrei uma thread no Forum ASP.NET, mas que não funcionou no meu caso.
http://forums.asp.net/t/1666012.aspx/1

Então lendo a documentação do jQuery Mobile atentamente eis a SOLUÇÃO:

Só é necessário decorar o form que posta o arquivo com: data-ajax=”false”.

Explicação melhor abaixo:

File Inputs

Using a multipart form with a file input is not supported by ajax. In this case you should decorate the parent form with data-ajax=”false” to ensure the form is submitted properly to the server.

Dica: Criando grid mestre/detalhe em Runtime com DevExpress

Após encontrar alguma dificuldade em criar um grid CHILD para DevExpress em tempo de runtime, encontrei a seguinte solução:

public partial class Form1 : Form {
 public Form1() {
 InitializeComponent();
 NorthwindEntities northwind = new NorthwindEntities();
 ObjectQuery customersQuery = northwind.Customers.Include(“Orders”);
 gridControl1.DataSource = new BindingSource(customersQuery, “”);
 }

private void gridView1_MasterRowEmpty(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowEmptyEventArgs e) {
 Customers c = (Customers)gridView1.GetRow(e.RowHandle);
 e.IsEmpty = c.Orders.Count == 0;
 }

private void gridView1_MasterRowGetRelationCount(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetRelationCountEventArgs e) {
 e.RelationCount = 1;
 }

private void gridView1_MasterRowGetRelationName(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetRelationNameEventArgs e) {
 e.RelationName = “Orders”;
 }

private void gridView1_MasterRowGetChildList(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetChildListEventArgs e) {
 Customers c = (Customers)gridView1.GetRow(e.RowHandle);
 e.ChildList = new BindingSource(c, “Orders”);
 }
 }

Resumindo:
Implementa-se 4 eventos: MasterRowEmpty, MasterRowGetRelationCount, MasterRowGetRelationName e MasterRowGetChildList.
E problema resolvido.

Fonte: http://devexpress.com/Support/Center/p/Q182589.aspx?searchtext=master+detail

Dica: Acessando ServiceReference em Class Library com C#

Problema:
Ao tentar acessar web service registrado em Class Library obtive o seguinte erro:

Could not find default endpoint element that references contract….

Solução:

EndpointAddress endpointAddress = new EndpointAddress("HTTP://endereco.com/service.asmx");
BasicHttpBinding binding1 = new BasicHttpBinding(BasicHttpSecurityMode.None);
var servico = new ServiceTeste.ServiceSoapClient(binding1, endpointAddress);

Dessa forma Endpoint e o Binding padrão do serviço serão criados dinamicamente.

Fonte: C# & ASP.Net – Kishore Gorjala: WCF Client without app.config/web.config

http://csharpaspnet.blogspot.com/2009/01/wcf-client-without-appconfigwebconfig.htm

dotnettips.wordpress.com/

Helping Programmers Since 1994

Viagem e Voo

Dicas para viagens, férias e voos nacionais e internacionais

Ivan Guimarães Meirelles

Analista Desenvolvedor

Void Podcast

Vazio e sem retorno de valor

Elemar DEV

Negócios, tecnologia e desenvolvimento

2,000 Things You Should Know About WPF

Everything a WPF Developer Needs to Know, in Bite-Sized Chunks

blog

so long

Fernando Franzini Blog

Engenharia de Software e Arquitetura Ágil

Gabriel RB.net

Blog técnico, com dicas, códigos, novidades e problemas do dia-a-dia programando.

Alexandre Valente's Blog

Experiências em tecnologia e assuntos diversos

%d blogueiros gostam disto: