UiPath Documentation
marketplace
latest
false

Guía del usuario de Marketplace

Última actualización 5 de may. de 2026

Crear paquetes de actividades

Dado que la plataforma de UiPath se basa en el marco .NET, todas las actividades toman la forma de un paquete Nuget (este es el paquete .nupkg que se obtiene al descargar una actividad directamente desde Go! a Marketplace o desde las fuentes en el gestor de paquetes de UiPath Studio). Hay 4 tipos de archivos necesarios para agrupar tus archivos en un único paquete Nuget:

Archivos de información de ensamblado

Imagen de documentos

Cada vez que creas un proyecto dentro de Visual Studio, el motor de compilación de Microsoft (también conocido como MSBuild) transforma el código de ese proyecto en una DLL, una biblioteca que puede ser utilizada por otras aplicaciones de Windows. Los metadatos de esta biblioteca provienen de tres archivos AssemblyInfo almacenados en la sección Propiedades de tu proyecto y que proporcionan información para los diferentes niveles de un conjunto de actividades. Echemos un vistazo a cada uno:

1. AssemblyInfo.cs

[assembly: AssemblyTitle("MyCompany.MyProduct.Activities")]
[assembly: AssemblyDescription("This activity was made using the UiPath Activity Set extension.")]
[assembly: ComVisible(false)]
[assembly: Guid("133E5191-68DA-4F05-9A81-D5CFA16525C8")]
[assembly: AssemblyTitle("MyCompany.MyProduct.Activities")]
[assembly: AssemblyDescription("This activity was made using the UiPath Activity Set extension.")]
[assembly: ComVisible(false)]
[assembly: Guid("133E5191-68DA-4F05-9A81-D5CFA16525C8")]

AssemblyInfo.cs contiene los metadatos únicos de este proyecto en particular (por ejemplo, MiEmpresa.MiProducto).

  • TítuloDeEnsamblado da un nombre descriptivo a tu archivo DLL. Para simplificar, debe coincidir con el nombre del proyecto.
  • DescripciónDeEnsamblado es un breve resumen de la naturaleza y el propósito del ensamblado. Hay varios otros atributos, como la cultura o el número de versión, que pueden incluirse. Para obtener una lista completa, consulta la documentación oficial de Microsoft.
  • ComVisible y Guid son atributos predeterminados utilizados por las aplicaciones que hacen referencia a la biblioteca eventual de este proyecto. Permanecen intactos para la mayoría de las actividades, pero puedes leer más sobre sus efectos aquí.

2. MyCompany.MyProductAssemblyInfo.cs

#i DEBUG
[assembly: AssemblyVersion("1.0.*")]
#els
[assembly: AssemblyVersion("1.0.0")]
#endi
#i DEBUG
[assembly: AssemblyVersion("1.0.*")]
#els
[assembly: AssemblyVersion("1.0.0")]
#endi

El siguiente archivo de ensamblado, AssemblyInfo.cs, contiene los metadatos que son únicos para el conjunto de actividades en su conjunto, pero se comparten entre todos los proyectos; en este caso, solo la versión de la actividad. Ten en cuenta que la versión es diferente para cada configuración de Visual Studio:

  • Debug: If Visual Studio is in debug mode, the activity is built with a version number 1.0.*, meaning the major and minor versions are set (1.0) and the patch version increments on each build. This is useful when making frequent changes to the same code as each subsequent package will be built with a new version, making it easily distinguishable.

  • Release: If Visual Studio is in release mode, the version number is set (e.g. 1.0.0). This provides complete control when it's time to officially release a package.

    Imagen de documentos

3. GlobalAssemblyInfo.cs

[assembly: AssemblyCompany("MyCompany")]
[assembly: AssemblyProduct("Product A")]
[assembly: AssemblyCopyright("MyCompany © 2019")]
[assembly: AssemblyTrademark("MyCompany™")]
[assembly: AssemblyCulture("en-CA")]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: AssemblyCompany("MyCompany")]
[assembly: AssemblyProduct("Product A")]
[assembly: AssemblyCopyright("MyCompany © 2019")]
[assembly: AssemblyTrademark("MyCompany™")]
[assembly: AssemblyCulture("en-CA")]
[assembly: NeutralResourcesLanguage("en-US")]

GlobalAssemblyInfo.cs contiene los metadatos compartidos entre todos los conjuntos de actividades que produce. Los paquetes UiPath.GSuite.Activities y UiPath.MicrosoftOffice365.Activities , por ejemplo, fueron creados por la misma empresa (UiPath), se dirigen al mismo producto (UiPath Studio) y tienen la misma información de Copyright, marca registrada e idioma, por lo que utilizaron el mismo archivo GlobalAssemblyInfo.cs para evitar duplicaciones innecesarias.

Nuspec

Imagen de documentos

Once all of your projects are compiled into DLLs, these libraries are bundled into a Nuget package that can be used in UiPath Studio. The metadata for this package comes from the nuspec file within your Design project.

Puedes ver la lista completa de elementos de metadatos disponibles a través de nuspec aquí, pero primero echa un vistazo al ejemplo básico a continuación. Estos elementos corresponden a los campos que se muestran en el gestor de paquetes de UiPath Studio y permiten a los usuarios encontrar y distinguir su conjunto de actividades.

Note that some of the elements, such as id and version, contain tags in the form $element$. These are taking their values from the corresponding tags in the AssemblyInfo files to prevent duplicating information.

<?xml version="1.0"?>
<package>
  <metadata>
    <id>$title$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <description>$description$</description>
    <copyright>$copyright$</copyright>
    <requireLicenseAcceptance>true</requireLicenseAcceptance>
    <licenseUrl>https://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
    <projectUrl>https://integrations.uipath.com/docs/integrating-with-uipath</projectUrl>
    <iconUrl>https://raw.githubusercontent.com/NuGet/Samples/master/PackageIconNuspecExample/icon.png</iconUrl>
    <tags>UiPath Activities</tags>
    <dependencies>
    </dependencies>
  </metadata>
  <files>
    <file src="$OutputPath$**\)\)MyCompany.MyProduct*resources.dll" target="lib\)
et461"/>
  </files>
</package>
<?xml version="1.0"?>
<package>
  <metadata>
    <id>$title$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <description>$description$</description>
    <copyright>$copyright$</copyright>
    <requireLicenseAcceptance>true</requireLicenseAcceptance>
    <licenseUrl>https://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
    <projectUrl>https://integrations.uipath.com/docs/integrating-with-uipath</projectUrl>
    <iconUrl>https://raw.githubusercontent.com/NuGet/Samples/master/PackageIconNuspecExample/icon.png</iconUrl>
    <tags>UiPath Activities</tags>
    <dependencies>
    </dependencies>
  </metadata>
  <files>
    <file src="$OutputPath$**\)\)MyCompany.MyProduct*resources.dll" target="lib\)
et461"/>
  </files>
</package>

Imagen de documentos

Nota:

If you're familiar with Visual Studio, you may know it is actually capable of building Nuget packages on its own using only the AssemblyInfo files and MSBuild. So why use an extra nuspec file? Certain metadata properties, such as the package Owner and Localization files, are only available in a nuspec, which is why we like to keep it around.

Metadatos del diseñador

Imagen de documentos

Una vez creadas tus actividades y construidos tus diseñadores (elementos de IU), deben vincularse y registrarse en el almacén de metadatos para que se muestren en el panel Actividades de UiPath Studio. El siguiente código crea dos actividades (ámbito principal y actividad secundaria) registrando la siguiente información en nombre de cada una:

  • Categoría: la sección del panel de actividades en la que aparecerán estas actividades. De forma predeterminada, está establecido en *MiEmpresa > MiProducto

  • y se puede cambiar modificando el atributo Categoría en Resources.resx. Observa cómo la línea 12 vincula una clase de tu proyecto de actividad a la categoría especificada en la línea 10.

  • Designer: The UI for that activity. See how line 13 links a class from your activity project to a class from your design project.

  • Documentación: documentos en línea para la actividad. Selecciona cualquier actividad en uno de tus flujos de trabajo de UiPath, pulsa F1 y la documentación de ayuda para esa actividad se abrirá en el navegador predeterminado. La URL de esta documentación se especifica aquí, como en la línea 14 (*go.uipath.com

  • se utiliza como marcador de posición).

    namespace MyCompany.MyProduct.Activities.Design
    {
        public class DesignerMetadata : IRegisterMetadata
        {
            public void Register()
            {
                var builder = new AttributeTableBuilder();
                builder.ValidateTable();
                var categoryAttribute =  new CategoryAttribute($"{Resources.Category}");
                builder.AddCustomAttributes(typeof(ParentScope), categoryAttribute);
                builder.AddCustomAttributes(typeof(ParentScope), new DesignerAttribute(typeof(ParentScopeDesigner)));
                builder.AddCustomAttributes(typeof(ParentScope), new HelpKeywordAttribute("https://go.uipath.com"));
                builder.AddCustomAttributes(typeof(ChildActivity), categoryAttribute);
                builder.AddCustomAttributes(typeof(ChildActivity), new DesignerAttribute(typeof(ChildActivityDesigner)));
                builder.AddCustomAttributes(typeof(ChildActivity), new HelpKeywordAttribute("https://go.uipath.com"));
                MetadataStore.AddAttributeTable(builder.CreateTable());
            }
        }
    }
    namespace MyCompany.MyProduct.Activities.Design
    {
        public class DesignerMetadata : IRegisterMetadata
        {
            public void Register()
            {
                var builder = new AttributeTableBuilder();
                builder.ValidateTable();
                var categoryAttribute =  new CategoryAttribute($"{Resources.Category}");
                builder.AddCustomAttributes(typeof(ParentScope), categoryAttribute);
                builder.AddCustomAttributes(typeof(ParentScope), new DesignerAttribute(typeof(ParentScopeDesigner)));
                builder.AddCustomAttributes(typeof(ParentScope), new HelpKeywordAttribute("https://go.uipath.com"));
                builder.AddCustomAttributes(typeof(ChildActivity), categoryAttribute);
                builder.AddCustomAttributes(typeof(ChildActivity), new DesignerAttribute(typeof(ChildActivityDesigner)));
                builder.AddCustomAttributes(typeof(ChildActivity), new HelpKeywordAttribute("https://go.uipath.com"));
                MetadataStore.AddAttributeTable(builder.CreateTable());
            }
        }
    }
    

    Imagen de documentos

Crear el conjunto de actividades

Una vez completos los archivos mencionados, es fácil crear el conjunto de actividades. En el Explorador de soluciones, haz clic con el botón derecho del ratón en tu solución y selecciona Volver a crear solución.

Imagen de documentos

El panel de salida indicará que los tres proyectos se crearon correctamente y proporcionará la ruta de acceso a su archivo nupkg incluido.

Imagen de documentos

Nota:

Para crear tu paquete de actividades, también podrías haber hecho clic con el botón derecho y "Reconstruir" la carpeta MyCompany.MyProduct o el proyecto MyCompany.MyProduct.Activities.Design . ¿Por qué? Consulta la siguiente sección sobre scripts posteriores a la compilación.

Scripts posteriores a la compilación

Navega hasta Propiedades> Eventos de compilación de tu proyecto de diseño y encontrarás un script posterior a la compilación, que se ejecuta inmediatamente después de que se hayan creado todos tus proyectos.

Imagen de documentos

La primera línea de este script elimina cualquier versión antigua y obsoleta del paquete que exista en el directorio de salida para evitar el desorden.

La segunda línea usa la herramienta de línea de comandos NuGet (nuget.exe) para combinar los archivos DLL de tus 3 proyectos en un paquete nuget que puede leer UiPath Studio.

if exist $(TargetDir)Packages\)\)MyCompany.MyProduct*.* del $(TargetDir)Packages\)\)MyCompany.MyProduct*.*
if $(ConfigurationName) == Debug "$(SolutionDir).nuget\)\)NuGet.exe" pack "$(ProjectPath)" -OutputDirectory "Packages" -IncludeReferencedProjects -Prop Configuration=$(ConfigurationName)
if exist $(TargetDir)Packages\)\)MyCompany.MyProduct*.* del $(TargetDir)Packages\)\)MyCompany.MyProduct*.*
if $(ConfigurationName) == Debug "$(SolutionDir).nuget\)\)NuGet.exe" pack "$(ProjectPath)" -OutputDirectory "Packages" -IncludeReferencedProjects -Prop Configuration=$(ConfigurationName)

¿Te ha resultado útil esta página?

Conectar

¿Necesita ayuda? Soporte

¿Quiere aprender? UiPath Academy

¿Tiene alguna pregunta? Foro de UiPath

Manténgase actualizado