venerdì 22 gennaio 2016

Can't find the valid AspnetMergePath

Ciao a tutti,
oggi mi sono scontrato con un piccolo problema di compilazione su visual studio 2015 community.
Appena avviavo la pubblicazione ottenevo il seguente errore:

Can't find the valid AspnetMergePath


dopo tante indagini sono risalito al problema:

in pratica visual studio si è smarrito il path del file relativo.

Per corregere il problema basta andare sulla cartella:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Transform

li troverete il file

Microsoft.Web.Publishing.AspNetCompileMerge.targets

apritelo con diritti di amministratore e intorno alla riga 125 dovreste trovare:

 <Target
      Name="GetAspNetMergePath"
      DependsOnTargets="$(GetAspNetMergePathDependsOn)"
      Condition ="'$(GetAspNetMergePath)' != 'false'">
    .......


Agiungere il seguente codice :
<TargetFrameworkSDKToolsDirectory>
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\
<TargetFrameworkSDKToolsDirectory/>
dove viene inserito il percorso del file eseguibile aspnet_merge.exe

il resto potete lasciarlo come si trova.
Il risultato che dovrete avere è:

 <Target
      Name="GetAspNetMergePath"
      DependsOnTargets="$(GetAspNetMergePathDependsOn)"
      Condition ="'$(GetAspNetMergePath)' != 'false'">
  <PropertyGroup>
  <TargetFrameworkSDKToolsDirectory> 
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\<TargetFrameworkSDKToolsDirectory/>
     <AspnetMergeName>  aspnet_merge.exe</AspnetMergeName>
      <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
    </PropertyGroup>
    <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
           Text="Can't find the valid AspnetMergePath" />
  </Target>
 


Andate su visual studio è avviate la pubblicazione.

Ciao e buona pubblicazione a tutti

mercoledì 8 luglio 2015

Installare asp.net4.5 e configurare IIS

Prima di tutto va installato il framework4.5 sulla vostra macchina.
Dopo aver finito l'installazione per essere sicuri che asp.net4.5 sia stato installato su IIS dovete lanciare da riga di comando "cmd" il seguente comando:

dism /online /enable-feature /featurename:IIS-ASPNET45

Al termine avrete configurato correttamente IIS.

N.B se non riesce a completare l'installazione, poichè servono applicazioni padre installate, aggiungere alla riga "/all" in modo che in automatico installa tutto quello che serve.


Ciao

lunedì 4 novembre 2013

Compatibilità IE 11 con .Net 4.0, ajaxcontroltoolkit 4.0

Da qualche giorno, dopo aver installato IE 11, le mie applicazione basate su asp.net 4.0 e ajaxcontroltoolkit , hanno smesso di funzionare.
Il problema nasce poichè ajaxcontroltoolkit non riconosce il browser impedendo ai updatepanel di fare CrossPostBack.
Per risolvere questo problema, in attesa di aggiornare i server al framework 4.5 ho trovato una scorciatoia.
Basta aggiungere al nostro progetto un file BrowserFile.browser ed aggiungere il seguente codice:

<browsers> 
 
<browser id="IE11Preview" parentID="Mozilla">
    <identification>
      <userAgent match="Trident/(?'layoutVersion'\d+).*rv:(?'revision'(?'major'\d+)(\.(?'minor'\d+)?))" />
      <userAgent nonMatch="MSIE" />
    </identification>
 
    <capabilities>
      <capability name="browser"              value="IE" />
      <capability name="layoutEngine"         value="Trident" />
      <capability name="layoutEngineVersion"  value="${layoutVersion}" />
      <capability name="isColor"              value="true" />
      <capability name="screenBitDepth"       value="8" />
      <capability name="ecmascriptversion"    value="3.0" />
      <capability name="jscriptversion"       value="6.0" />
      <capability name="javascript"           value="true" />
      <capability name="javascriptversion"    value="1.5" />
      <capability name="w3cdomversion"        value="1.0" />
      <capability name="ExchangeOmaSupported" value="true" />
      <capability name="activexcontrols"      value="true" />
      <capability name="backgroundsounds"     value="true" />
      <capability name="cookies"              value="true" />
      <capability name="frames"               value="true" />
      <capability name="javaapplets"          value="true" />
      <capability name="supportsCallback"     value="true" />
      <capability name="supportsFileUpload"   value="true" />
      <capability name="supportsMultilineTextBoxDisplay" value="true" />
      <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
      <capability name="supportsVCard"        value="true" />
      <capability name="supportsXmlHttp"      value="true" />
      <capability name="tables"               value="true" />
      <capability name="supportsAccessKeyAttribute"    value="true" />
      <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
      <capability name="vbscript"             value="true" />
      <capability name="revmajor"             value="${major}" />
      <capability name="revminor"             value="${minor}" />
    </capabilities>
  </browser>
  
</browsers>
 
 
Copiamo il file compilato sul server e tutto ritornerà a funzionare.
 

giovedì 18 agosto 2011

multi binding fra tabelle con linq

Ciao,

oggi vi riporto un problema ormai frequente quando si comincia ad usare in applicazioni asp linq associato con gridview.

Immaginate di fare una select facendo varie join tra tabelle e poi passarla ad una gridview, sapete qual'è il risultato?

DataBinding:
'<>f__AnonymousType0`2.......... ovvero il campo non viene riconosciuto nella
sorgente dati passata alla gridview


La soluzione è associare il nome della tabella seguita dal nome campo alla proprietà DataField;

DataField="nomeTabella.nomeCampo"


però questo non basta poichè, o sia un problema o un peculiarità, il tutto funziona se si converte il campo in TemplateField.


Per capirci meglio vi riporto un esempio;

Immaginiamo di fare una semplice select fra due tabelle (ovviamente usando linq) e associarli alla gridview:

var query = from C in clienti
join OV in orariVisita on C.id equals OV.idCliente into JoinedCliOrarVis
from OV in JoinedCliOrarVis.DefaultIfEmpty()
select new { C, OV};

MiaDataGridView.DataSource = query;
MiaDataGridView.DataBind();

<asp:GridView ID="GridView4" runat="server" autogeneratecolumns="False"
width="10%">
<asp:BoundField DataField="C.nominativo" HeaderText="Nominativo" />
<asp:BoundField DataField="OV.oraVisita" HeaderText="Orario Visita" />
</asp:GridView>

In questo caso si ottiene l'errore ugualmente, ma se si converte il campo in TemplateField, il campo viene riconosciuto.

<asp:GridView ID="GridView4" runat="server" autogeneratecolumns="False"
width="10%">
<columns>
<asp:templatefield headertext="Nominativo">
<itemtemplate>
<asp:Label ID="NominativoLabel" runat="server"
text='<%# Eval("C.nominativo") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="Orario Visita">
<itemtemplate>
<asp:Label ID="OraVisitaLabel" runat="server"
text='<%# Eval("OV.oraVisita") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
</columns>
</asp:GridView>

martedì 16 agosto 2011

left / right join con linq

Dopo un periodo si assenza eccomi qui.
Spesso vedo tra vari post difficoltà da parte di programmatori nel realizzare una left o right join con linq.
Ecco la soluzione:

Left join
var query = from C in clienti
join OV in orariVisita on C.id equals OV.idCliente into JoinedCliOrarVis
from OV in JoinedCliOrarVis.DefaultIfEmpty()
select new {nominativo = C.nominativo, oraVisita = OV.oraVisita};

ovviamente se si vuole una right join basta invertire la query:

Right join

var query = from OV in orariVisita
join C in clienti on  OV.idCliente equals  C.id into JoinedOrarVisCli
from OV in JoinedOrarVisCli.DefaultIfEmpty()
select new {nominativo = C.nominativo, oraVisita = OV.oraVisita};


penso che sia molto semplice.

Buon lavoro :-)

venerdì 4 giugno 2010

Error 25007.Error occurred while initializing fusion. Setup could not load fusion with LoadLibraryShim().

Se qualche volta disistallando ed istallando qualche applicazione vi siete imbattuti su questo tipo di errore(come è capitato a me, poichè volevo disinstallare il framework 2.0 e riinstallarlo) le soluzioni sono due: la prima drastica, formattare il vostro pc; la seconda, meno drastica è cercare la soluzione.

Dopo tante peripezie e lettura di tanti forum, finalmente ho trovato la soluzione:

chi volesse leggere tutti i vari commenti vi fornisco il link originale:

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/47c93410-2ee2-4dd1-812a-04475d50de7c

Altrimenti vi faccio un piccolo riepilogo:

  1. Andare sotto C:\WINDOWS\WinSxS
  2. Cancellare la cartella Policies
  3. Creare una cartella x86_policy.8.0.Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_x-ww_77c24773
  4. Copiare da una qualsiasi cartella con "VC80CRT" i file presenti e inserirli nella cartella appena creata
  5. Eliminare in %windir%\system32 la DLL mscoree.dll
  6. Ora potete lanciare l'installazione del Framework

martedì 25 maggio 2010

Impossibile caricare il file o l'assembly 'App_Web_........, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

A volte quando si utilizza un servizio WCF o un servizio web .asmx ci si può trovare davanti ad un errore del tipo:

Impossibile caricare il file o l'assembly 'App_Web_............, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' o una delle relative dipendenze. Impossibile trovare il file specificato.

[FileNotFoundException: Impossibile caricare il file o l'assembly 'App_Web_gx-do6kw, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' o una delle relative dipendenze. Impossibile trovare il file specificato.] System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0 System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +43 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +127 System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +142 System.Reflection.Assembly.Load(String assemblyString) +28 System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +162 System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +11659932 System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +42 System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479 [ServiceActivationException: Impossibile attivare il servizio '/CopiaC.M.A/ServiceSlideShow.svc' a causa di un'eccezione durante la compilazione. Messaggio dell'eccezione: Impossibile caricare il file o l'assembly 'App_Web_gx-do6kw, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' o una delle relative dipendenze. Impossibile trovare il file specificato..] System.ServiceModel.AsyncResult.End(IAsyncResult result) +11531006 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +194 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +176 System.ServiceModel.Activation.HttpHandler.ProcessRequest(HttpContext context) +23 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

Questo tipo di problema è risolvibile semplicemente andando sulla cartella:

C:\WINDOWS\Microsoft.NET\Framework\v(Versione Framework)\Temporary ASP.NET Files

e cancellare il contenuto della cartella che ha il nome della vostra applicazione.
Vi ricordo che dovete stoppare l'applicazione.

Buon proseguimento......