我正在寻找有关使用自定义向导(以允许输入自定义参数)制作多项目模板(即包含多个项目的可部署解决方案)的帮助。
我已经按照“如何:创建多项目模板”来制作多项目模板。这是有效的。
我已经按照“如何:将向导与项目模板一起使用”在我的 VSIX 文件中创建我的向导。这是有效的。
但是,我无法让他们一起工作。我可以在没有向导的情况下部署我的多项目模板,或者我可以通过我的 VSIX 文件,使用一个有效的自定义向导将我所有的单个项目模板显示在项目库中。
关于如何结合这两种方法的任何想法?
wizard multi-project visual-studio-templates vsix visual-studio-2017
我正在尝试为 Visual Studio 2019 创建多项目解决方案模板。我可以在多个文件夹中成功添加多个项目。
作为下一步,我想将本地文件添加到解决方案的根目录中,甚至添加到诸如.gitignore, nuget.config,... 文件的文件夹中,但到目前为止还没有运气。
下面是我的.vstemplate文件,注释行是我要添加的文件。我已经尝试过这种方式,将线条放在一个<SolutionFolder>块中,将它们放在ProjectCollection块外,......
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>Test Application</Name>
<Description>A project template for creating a basic Test Application</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>false</CreateNewFolder>
<DefaultName>MaestroApp</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<BuildOnLoad>true</BuildOnLoad>
<Icon>M.png</Icon>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<!--
<ProjectItem ReplaceParameters="false" TargetFileName=".gitattributes">.gitattributes</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName=".gitignore">.gitignore</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName="directory.build.props">directory.build.props</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName="nuget.config">nuget.config</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName="README.MD">README.MD</ProjectItem>-->
<SolutionFolder Name="Documents" CreateOnDisk="true"></SolutionFolder>
<SolutionFolder Name="src" CreateOnDisk="true">
<ProjectTemplateLink ProjectName="$projectname$" CopyParameters="true">
MaestroApplicationTemplate\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Data" CopyParameters="true">
MaestroApplicationTemplate.Data\MyTemplate.vstemplate
</ProjectTemplateLink> …Run Code Online (Sandbox Code Playgroud) 我们在根项目中有一个带有settings.gradle且没有build.gradle的多项目.
gradle的默认行为是查看top dir上的settings.gradle文件,并为之前定义的每个项目读取build.gradle.
我的问题是:根据已检出多项目的环境,我想在从根项目运行构建时以默认"build2.gradle"而不是"build.gradle"运行.
最好的方法是什么?
谢谢
我有以下SBT/Play2多项目设置:
import sbt._
import Keys._
import PlayProject._
object ApplicationBuild extends Build {
val appName = "traveltime-api"
val appVersion = "1.0"
val appDependencies = Seq(
// Google geocoding library
"com.google.code.geocoder-java" % "geocoder-java" % "0.9",
// Emailer
"org.apache.commons" % "commons-email" % "1.2",
// CSV generator
"net.sf.opencsv" % "opencsv" % "2.0",
"org.scalatest" %% "scalatest" % "1.7.2" % "test",
"org.scalacheck" %% "scalacheck" % "1.10.0" % "test",
"org.mockito" % "mockito-core" % "1.9.0" % "test"
)
val lib = RootProject(file("../lib"))
val chiShape = RootProject(file("../chi-shape"))
lazy val …Run Code Online (Sandbox Code Playgroud) 我在Mercurial仓库中托管了Gradle多项目.我想以这样的方式设置我的Jenkins,如果我只对1个子项目进行更改,那么只会构建该子项目并将其发布到我的Nexus repo.
有人可以给我一个暗示吗?或者它是否可能?
我正在创建具有Web应用程序,桌面,少数类库和单元测试项目的多项目解决方案模板.
我构建了基本容器并将其打包为VSIX容器.当我安装VSIX容器时,我可以在以下物理路径中使用我的解决方案模板的.zip文件
%AppData%\ Local\Microsoft\VisualStudio\11.0\Extensions\tbxs0hui.w2e\ProjectTemplates\CSharp\1033\myprojecttemplate.zip,所以一切都很好.
但是当我启动Visual Studio 2012时,我看不到新项目 - > Visual C#下列出的我的解决方案模板.
当我出错的时候?有什么建议?
这是Multisolution RootTemplate.vstemplate内容:
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
<TemplateData>
<Name>MultiProject</Name>
<Description>MultiProject</Description>
<Icon>MultiProject.ico</Icon>
<ProjectType>CSharp</ProjectType>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
<SortOrder>1000</SortOrder>
<TemplateID>bbd7217a-8572-4edc-80ce-488cb9a347df</TemplateID>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>MultiProject</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<SolutionFolder Name="FolderName1">
<SolutionFolder Name="FolderName2">
<ProjectTemplateLink ProjectName="xxxxx">Children\Application1\Application1.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="yyyy">Children\Application1\Application2.vstemplate</ProjectTemplateLink>
</SolutionFolder>
<SolutionFolder Name="Folder3">
<ProjectTemplateLink ProjectName="zzzzzz">Children\Application3\Application3.vstemplate</ProjectTemplateLink>
</SolutionFolder>
<SolutionFolder Name="Web">
<ProjectTemplateLink ProjectName="Web">Children\Web\Web.vstemplate</ProjectTemplateLink>
</SolutionFolder>
</SolutionFolder>
<SolutionFolder Name="Tests">
<ProjectTemplateLink ProjectName="xxxxxTest">Children\ApplicationxxxxUnitTest\ApplicationxxxxUnitTest.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="yyyyyTest">Children\ApplicationyyyyUnitTest\ApplicationyyyyUnitTest.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="zzzzzTest">Children\ApplicationzzzzUnitTest\ApplicationzzzzUnitTest.vstemplate</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="WebTest">Children\ApplicationWebUnitTest\ApplicationWebUnitTest.vstemplate</ProjectTemplateLink>
</SolutionFolder>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)
在安装VSIX之后,我可以在VS2012中看到一个名为"MultiProject"的新项目.当我创建一个新项目时,四个测试项目没有在Tests文件夹下创建.我尝试用vstemplate中的Tests Folder下的类库替换它们,它工作正常,只有ProjectTypeGuid {3AC096D0-A1C2-E12C-1390-A8335801FDAB}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}的单元测试项目未在测试文件夹下创建.
multi-project project-template vsix visual-studio-extensions visual-studio-2012
我正在处理以下项目结构
Project
|-Subproject1
|-Subproject2
|build.gradle
|settings.gradle
Run Code Online (Sandbox Code Playgroud)
子模块包含在根项目的中,settings.gradle并在build.gradle根项目中进行配置。
我有3件事要做
build (每个子项目都有这个)deploy (这是每个子项目需要独立工作的打包机制)finalizeDeployment (仅需调用一次)我希望能够打电话
$gradle deploy< -所有子项目得到部署并最终确定被调用一次,在结束
$gradle Subproject1:deploy <-Subproject1被部署并完成被调用
build.gradle
Project
|-Subproject1
|-Subproject2
|build.gradle
|settings.gradle
Run Code Online (Sandbox Code Playgroud) 我们正在从 Maven 迁移到 Gradle,并且正在努力解决一件事。我们有一个基于 Maven 的 POM 的多项目 Gradle 项目。大部分工作正常,但我们找不到收集 WAR 文件和 ZIP 文件的方法,这些文件是构建子项目的结果。每个子项目代表一个微服务。我们已经找到(也在 Stackoverflow 上)将所有 jar 和第三方库收集到一个目录中的方法。但是,我们正在寻找一种方法来收集每个微服务的资源和库。在 Maven 中我们做了这样的事情:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>Publish/</outputDirectory>
<artifactItems>
<artifactItem>
<groupId>....</groupId>
<artifactId>...</artifactId>
<version>${project.version}</version>
<type>zip</type>
</artifactItem>
<artifactItem>
<groupId>....</groupId>
<artifactId>...</artifactId>
<version>${project.version}</version>
<type>war</type>
</artifactItem>
Run Code Online (Sandbox Code Playgroud)
我希望最终得到一个可以找到的目录:
project1.war
project2.war
project3.zip
etc.
Run Code Online (Sandbox Code Playgroud) 我有一个依赖问题,我不知道如何解决它.
我有一个项目A,B和C.
A需要B和C.
B需要C
我的目录结构如下所示:
A
|-settings.gradle
|-build.gradle
|-lib
|- B
|- C
Run Code Online (Sandbox Code Playgroud)
settings.gradle内容:
include 'lib/B'
include 'lib/C'
Run Code Online (Sandbox Code Playgroud)
build.gradle内容:
apply plugin: 'java'
dependencies {
compile project(':lib/B'),
project(':lib/C')
}
project(':lib/B'){
dependencies {
compile project(':lib/C')
}
}
Run Code Online (Sandbox Code Playgroud)
如果我不声明项目(':lib/B'){...}部分,则由于依赖性而无法构建项目B.
如果我声明项目(':lib/B'){...}部分,Gradle告诉我:无法在org.gradle.api.internal上找到参数[project':lib/C']的方法compile() .artifacts.dsl.pendencies.DefaultDependencyHandler_Decorated @ 221bad.
我怎么能解决它,或者在B之前编译C?
PS:数据结构更改是不可能的.
multi-project ×10
gradle ×6
vsix ×2
build ×1
dependencies ×1
java ×1
jenkins ×1
sbt ×1
scala ×1
subproject ×1
wizard ×1