我只是在dotnetnuke或者某个实用程序或dnn的某个安装程序模块中寻找一些选项,它可以生成我的动态桌面模块的安装程序(.zip包) .
在我尝试通过Host-> Module Definition创建模块包的那一刻......它只创建那些存在于该Module文件夹中的文件的包但我想它还应该包含相关的DLL和Database Script,请指导我如何我可以包含依赖/相关的DLL和脚本文件 .
谢谢,报道
我建议NAnt用于自动化每个模块的包装过程 . 它需要一些设置和配置,但如果您经常打包模块,随着时间的推移它会节省大量的精力 . 它还确保您每次打包模块时都以相同的方式构建软件包 .
脚步:
1)下载NAnt并将其解压缩到计算机上的某个位置 . 我建议使用0.86 beta 1版本的NAnt .
2)将NAnt合并到Visual Studio中作为“外部工具”
Bill Simser instructs:
转到工具|创建新的外部工具外部工具单击添加以添加新工具为其命名为“NAnt”浏览到NAnt.exe文件的位置,无论您将其下载到何处,将初始目录设置为$(SolutionDir)(.build文件所在的位置)单击“使用输出窗口”单击“确定”在外部工具菜单中
3)将构建脚本合并到您的解决方案中
例如,这是我创建的Tell A Friend模块的构建文件 . The full source to the module is also available.
您需要验证所有初始属性是否对您的模块有效 . 例如,您肯定想要更改“project.name”,“solution.file”和“project.dll”属性 . 但是您可能还需要更改其他属性(引用目录是一个很好的候选者,因为您可能没有在文件系统上以相同的方式构建模块的依赖程序集) .
<?xml version="1.0" encoding="utf-8" ?> <project xmlns="http://nant.sf.net/release/0.86-beta1/nant.xsd" name="Engage: Tell A Friend" basedir="." default="package"> <property name="build" value="true" overwrite="false"/> <property name="bin.directory" value="..\..\bin" overwrite="false"/> <property name="project.config" value="release"/> <property name="project.name" value="TellAFriend"/> <property name="solution.file" value="Engage${project.name}.sln"/> <property name="references.directory" value="References"/> <property name="project.dll" value="${bin.directory}\Engage${project.name}.dll"/> <patternset id="content.fileset"> <include name="**/*.ascx" /> <include name="**/*.aspx" /> <include name="**/*.asmx" /> <include name="**/*.resx" /> <include name="**/*.html" /> <include name="**/*.htm" /> <include name="**/*.css" /> <include name="**/*.jpg" /> <include name="**/*.gif" /> <include name="**/*.png" /> <include name="**/*.pdf" /> <include name="**/*.xml"/> <include name="**/*.xsd"/> <exclude name="Licenses/EULA-*.htm"/> <exclude name="ReleaseNotes_*.htm"/> <exclude name="??.??.??.txt" /> <exclude name="_ReSharper.*/**"/> </patternset> <patternset id="source.fileset"> <include name="**/*.js"/> <include name="**/*.cs"/> <include name="**/*.vb"/> <include name="**/*.sln"/> <include name="**/*.csproj"/> <include name="**/*.vbproj"/> <include name="**/*.build"/> <include name="**/*.dnn"/> <include name="**/*.docx"/> </patternset> <target name="build" description="Builds the solution" if="${build}"> <exec program="${environment::get-variable('windir')}\Microsoft.NET\Framework\v3.5\msbuild.exe" failonerror="true"> <arg value="${solution.file}" /> <arg value="/p:Configuration=${project.config}" /> <arg value="/p:Platform="Any CPU"" /> </exec> </target> <target name="get-version" depends="build" description="Sets the project.version property to the first three numbers from the version of the main assembly for this module"> <property name="version" value="${assemblyname::get-version(assembly::get-name(assembly::load-from-file(project.dll)))}" /> <property name="project.version" value="${string::substring(version,0,string::last-index-of(version,'.'))}" /> </target> <target name="package" depends="get-version" description="Creates packages for this module, one for each three licenses and version of DNN (4 and 5)"> <property name="package.directory" value="package"/> <property name="package.name" value="Resources.zip"/> <property name="package.license" value="Free"/> <property name="includeSource" value="false"/> <call target="setup-package-files"/> <call target="create-resources-zip"/> <call target="create-packages"/> <property name="includeSource" value="true"/> <call target="add-sources-to-resource-zip"/> <call target="create-packages"/> <delete file="${package.directory}\${package.name}" failonerror="false"/> <delete dir="${package.directory}\temp" failonerror="false"/> <call target="project-specific-tasks"/> </target> <target name="create-resources-zip" description="Creates the Resources.zip file for content (Install package) files"> <mkdir dir="${package.directory}" failonerror="false"/> <mkdir dir="${package.directory}/temp" failonerror="false" /> <mkdir dir="${package.directory}/temp/resources" failonerror="false" /> <copy todir="${package.directory}/temp/resources" flatten="false"> <fileset> <patternset refid="content.fileset"/> <exclude name="obj/**"/> <exclude name="${package.directory}/**"/> </fileset> </copy> <zip zipfile="${package.directory}/temp/package/${package.name}"> <fileset basedir="${package.directory}/temp/resources"> <include name="**/*"/> </fileset> </zip> </target> <target name="add-sources-to-resource-zip" description="Adds the files for the Source package to the Resources.zip file"> <copy todir="${package.directory}/temp/resources" flatten="false"> <fileset> <patternset refid="source.fileset"/> <exclude name="obj/**"/> <exclude name="${package.directory}/**"/> </fileset> </copy> <zip zipfile="${package.directory}/temp/package/${package.name}"> <fileset basedir="${package.directory}/temp/resources"> <include name="**/*"/> </fileset> </zip> </target> <target name="setup-package-files" description="Copies common package files to the temp/package directory, and sets version-dependent attributes in the DNN 5 manifest file"> <property name="releaseNotes.file" value="ReleaseNotes_${project.version}.htm"/> <property name="license.file" value="EULA-${package.license}.htm"/> <mkdir dir="${package.directory}/temp/package" failonerror="false"/> <copy todir="${package.directory}/temp/package" flatten="true"> <fileset> <include name="${releaseNotes.file}"/> <include name="??.??.??.txt" /> <include name="ReadMe.txt" /> <include name="**/*.SqlDataProvider"/> <include name="**/*.4.dnn"/> <include name="**/*.5.dnn"/> <include name="Licenses/${license.file}"/> </fileset> </copy> <copy todir="${package.directory}/temp/package/bin" flatten="true"> <fileset> <include name="${project.dll}"/> <include name="${references.directory}/*.dll"/> <exclude name="${references.directory}/DotNetNuke.dll"/> <exclude name="${references.directory}/DotNetNuke.WebUtility.dll"/> <exclude name="${references.directory}/Microsoft.ApplicationBlocks.Data.dll"/> </fileset> </copy> <attrib readonly="false"> <fileset basedir="${package.directory}/temp/package"> <include name="**"/> </fileset> </attrib> <xmlpoke file="${package.directory}/temp/package/Engage${project.name}.5.dnn" value="${license.file}" xpath="dotnetnuke/packages/package/license/@src"/> <xmlpoke file="${package.directory}/temp/package/Engage${project.name}.5.dnn" value="${releaseNotes.file}" xpath="dotnetnuke/packages/package/releaseNotes/@src"/> <xmlpoke file="${package.directory}/temp/package/Engage${project.name}.5.dnn" value="${project.version}" xpath="dotnetnuke/packages/package/@version"/> <xmlpoke file="${package.directory}/temp/package/Engage${project.name}.5.dnn" value="${project.version}" xpath="dotnetnuke/packages/package/components/component[@type='Script']/scripts/script[@type='UnInstall']/version"/> <xmlpoke file="${package.directory}/temp/package/Engage${project.name}.5.dnn" value="${project.version}" xpath="dotnetnuke/packages/package/components/component[@type='Assembly']/assemblies/assembly[version='REPLACED BY NANT']/version"/> <!--<xmlpoke file="${package.directory}/temp/package/Engage${project.name}.4.dnn" value="${project.version}" xpath="dotnetnuke/folders/folder/version"/>--> </target> <target name="create-packages" description="For the given license and type, creates packages for DNN 4 and DNN 5"> <property name="dnn.version" value="4"/> <call target="zip-package"/> <property name="dnn.version" value="5"/> <call target="zip-package"/> </target> <target name="zip-package" description="Zips up the files in the temp/package directory, getting the correct manifest file and using the correct naming convention"> <property name="package.type" value="Install"/> <if test="${includeSource}"> <property name="package.type" value="Source"/> </if> <zip zipfile="${package.directory}/${project.name}_${package.license}_${project.version}_${package.type}_${dnn.version}.zip"> <fileset basedir="${package.directory}/temp/package"> <include name="**/*"/> <exclude name="**/*.4.dnn" if="${dnn.version=='5'}"/> <exclude name="**/*.5.dnn" if="${dnn.version=='4'}"/> </fileset> </zip> </target> <target name="combine-enterprise" description="Combines the Install and Source enterprise packages into one .zip file"> <zip zipfile="${package.directory}/${project.name}_${package.license}_${project.version}_${dnn.version}.zip"> <fileset basedir="${package.directory}"> <include name="${project.name}_${package.license}_${project.version}_Install_${dnn.version}.zip"/> <include name="${project.name}_${package.license}_${project.version}_Source_${dnn.version}.zip"/> </fileset> </zip> <delete file="${package.directory}/${project.name}_${package.license}_${project.version}_Install_${dnn.version}.zip" failonerror="false"/> <delete file="${package.directory}/${project.name}_${package.license}_${project.version}_Source_${dnn.version}.zip" failonerror="false"/> </target> <target name="project-specific-tasks" description="Place tasks specific to the current project in this task"> </target> </project>
4)运行执行构建脚本的外部工具,并验证您的包 .
其他资源:
C# Compiled DotNetNuke Module Template (includes a NANT build file)
Packaging your DotNetNuke module using NAnt
一种更简单的方法(即无需学习Nant)将使用visual studio预构建和后构建事件(请参阅模块项目的项目属性) .
您也可以调用批处理文件来完成工作,如下所述:Module Package Builds Revisited .
希望这有帮助,皮特 .
2 回答
我建议NAnt用于自动化每个模块的包装过程 . 它需要一些设置和配置,但如果您经常打包模块,随着时间的推移它会节省大量的精力 . 它还确保您每次打包模块时都以相同的方式构建软件包 .
脚步:
1)下载NAnt并将其解压缩到计算机上的某个位置 . 我建议使用0.86 beta 1版本的NAnt .
2)将NAnt合并到Visual Studio中作为“外部工具”
Bill Simser instructs:
3)将构建脚本合并到您的解决方案中
例如,这是我创建的Tell A Friend模块的构建文件 . The full source to the module is also available.
您需要验证所有初始属性是否对您的模块有效 . 例如,您肯定想要更改“project.name”,“solution.file”和“project.dll”属性 . 但是您可能还需要更改其他属性(引用目录是一个很好的候选者,因为您可能没有在文件系统上以相同的方式构建模块的依赖程序集) .
4)运行执行构建脚本的外部工具,并验证您的包 .
其他资源:
C# Compiled DotNetNuke Module Template (includes a NANT build file)
Packaging your DotNetNuke module using NAnt
一种更简单的方法(即无需学习Nant)将使用visual studio预构建和后构建事件(请参阅模块项目的项目属性) .
您也可以调用批处理文件来完成工作,如下所述:Module Package Builds Revisited .
希望这有帮助,皮特 .