Edit: Ne peut pas être fait avec Azure Storage Emulator ...
J'ai vraiment eu du mal avec ce que je trouve la documentation sérieusement pauvre sans exemples appropriés, voici donc un exemple complet de mes scripts et fichiers pour quelqu'un d'autre , basé sur la réponse de Martin Brandl. Vous n'avez pas besoin de webRoleEntryPoint
pour un rôle Web uniquement. Utilisé uniquement pour les rôles de travail.
Créez un nouveau service de cloud vide dans votre projet. Cela générera des fichiers vides ServiceConfigiguration.Cloud.csfg
, ServiceConfigiguration.Cloud.csfg
et ServiceDefinition.csdef
pour vous ainsi qu'un dossier de rôles vides. Vous pouvez également ajouter un rôle web/worker pour permettre à Visual Studio de générer la configuration en eux, puis de les modifier en conséquence.
Modifier ces fichiers (changer le physicalDirectory
à votre propre):
ServiceDefinition.csdef
:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="SoundVast.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WebRole name="WebRole1" vmsize="Small">
<Sites>
<Site name="Web" physicalDirectory="../SoundVast">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
</ConfigurationSettings>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
</WebRole>
</ServiceDefinition>
<Site name="Web" physicalDirectory="../SoundVast">
est la ligne importante, ce physicalDirectory
est par rapport à chaque fois que votre fichier .csdef
est situé et je voulais faire mon projet principal SoundVast
le rôle Web qui était situé à un niveau.
ServiceConfiguration.Cloud.csfg
et ServiceConfiguration.Local.csfg
(les deux peuvent être les mêmes):
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="SoundVast.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2015-04.2.6">
<Role name="WebRole1">
<Instances count="1" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
L'important est que le nom du rôle correspond à votre nom de rôle Web des fichiers de définition de service <Role name="WebRole1">
.
# path to cspack
$cspackPath = Join-Path $env:ProgramFiles 'Microsoft SDKs\Azure\.NET SDK\v2.8\bin\cspack.exe'
$PackagePath = 'C:\Users\Yamo\Documents\visual studio 2015\Projects\SoundVast\SoundVast.Azure\SoundVast.cspkg'
$serviceDefinitionFile = 'C:\Users\Yamo\Documents\visual studio 2015\Projects\SoundVast\SoundVast.Azure\ServiceDefinition.csdef'
$webRoleName = 'WebRole1'
$webRolePath = 'C:\Users\Yamo\Documents\visual studio 2015\Projects\SoundVast\SoundVast.Azure'
# define the cspack parameters
$cspackParameter = @(
$serviceDefinitionFile,
"/role:$webRoleName;$webRolePath;",
"/sites:$webRoleName;SoundVast;$webRolePath",
"/out:$PackagePath"
)
# execute cspack
& $cspackPath @cspackParameter
Un fichier .cspkg
devrait maintenant avoir été généré à l'emplacement de votre $PackagePath
.
Aimerait savoir si quelqu'un ne fonctionne pas. Je lui ai donné une demi-heure et a décidé de vérifier la santé ici avec SO. Étant donné que même pour .NET 4.6 et la famille d'OS invité 4, vous devez installer manuellement netfx 4.6, je pense que cela prendra un peu de travail pour y arriver. –
Y a-t-il des plans pour soutenir cela à l'avenir? – Ender2050
Je ne peux pas utiliser un WebSite (maintenant WebApp) en ce moment car j'ai des objets COM hérités dont j'ai besoin pour m'inscrire pour un code plus ancien et je ne peux le faire qu'avec un Service Cloud ... mais je veux utiliser le dernier asp.net plutôt que de le re-coder à nouveau plus tard ... comme Ender l'a demandé, WebRoles sera-t-il jamais supporté? – Dan