1

我在单个 Visual Studio 解决方案中有一个网站、一个 Windows 服务和一些共享类库。我在网站和 Windows 服务上都使用 Octopack,在我的机器上,这些构建按预期工作。

使用 TFS Build Server 时,网站 nuget 包按预期生成,但 windows 服务 nuget 包包含来自网站的所有文件,以及服务。例如,它还包括 _PublishedWebsites 文件夹。

这是因为 TFS 使用单个位置来构建项目。

解决这个问题的最佳方法是什么?

4

2 回答 2

3

我知道这个问题已经被关闭,但我遇到了这个问题并以不同的方式解决了它。

我的解决方案受到许多网站和 Windows 服务的影响,并且在使用 Team Build 构建时,OctoPack 创建的 nuget 包包括来自“池”输出文件夹的所有解决方案程序集的相同问题。nuget 包获取所有程序集的原因是 OctoPack 使用 outdir msbuild 参数作为包含程序集的位置。

我解决它的方法是使用 msbuild 参数GenerateProjectSpecificOutputFolder=true。这指示 Team build 为输出文件夹中的每个项目创建一个文件夹,就像 Visual Studio 在本地构建时使用每个项目下的 bin 文件夹一样。

我的构建定义 msbuild 参数如下所示: /p:GenerateProjectSpecificOutputFolder=true;RunOctoPack=true;OctoPackPublishPackageToFileShare=\\<NugetServer>

我目前只是将包推送到共享文件夹,但也可以使用OctoPackPublishPackageToHttpand参数。OctoPackPublishApiKey

与上述解决方案相比,此解决方案的好处是您无需指定要包含 nuget 包的文件。

希望这可以帮助某人。

于 2013-04-26T19:25:45.243 回答
2

我最终使用这个 nuget 包来确保控制台应用程序构建到 TFS 服务器上的单独目录中。

https://nuget.org/packages/PublishedApplications/2.1.0.0

然后我必须在 nuspec 文件中指定控制台应用程序应包含哪些文件。例如

这可行,我现在可以使用 Octopus deploy 进行部署。

这种方法的缺点是 PublishedApplications 构建仅适用于 TFS 构建服务器,因此我无法在发布模式下本地构建项目。仍在寻找如何克服这一点。

于 2013-01-10T22:20:10.867 回答