1

我正在尝试在 TeamCity 中构建一个项目,其中包含一些 .csproj 文件正在使用的 DLL,但我不断收到错误(CS0246),因为它们无法访问它们所在的文件夹。

我在我的 VCS 根目录中添加了 2 个 SVN(Subversion - VisualSVN)文件夹,但是我需要在 .csproj 文件中进行编辑以编辑目录。它在 TeamCity 上以“..\assemblies\”的格式保存它服务器,但在本地(调试等时)它是“....\common\assemblies”

我们的其他项目正在使用 DLL,因此它们位于单个文件夹中,而不是在我们正在处理的项目中。

这有点难以解释。如果以上内容不够清楚,我将尝试详细说明。

<Reference Include="OpenCvSharp.MachineLearning">
  <HintPath>..\..\Common\assemblies\OpenCvSharp.MachineLearning.dll</HintPath>
</Reference>

应该

<Reference Include="OpenCvSharp.MachineLearning">
  <HintPath>..\assemblies\OpenCvSharp.MachineLearning.dll</HintPath>
</Reference>

在teamcity服务器上正常工作。然而,这不是一个选项,因为那样我们将无法在本地调试等,而不必一直更改路径。

"C:\TeamCity\buildAgent\work\fdbaf6ce1c990aa8\" 然后所有的 SVN 文件夹都保存在那里,然后省略了我们项目的“主”文件夹和包含 DLL 的文件夹

有谁知道如何解决这个问题?

4

1 回答 1

1

您可以使用构建配置有条件地引用相同的 DLL,但路径不同。在 .csproj 中:

<Reference Include="OpenCvSharp.MachineLearning">
  <HintPath Condition="'$(Configuration)' == 'Debug'">..\..\Common\assemblies\OpenCvSharp.MachineLearning.dll</HintPath>
  <HintPath Condition="'$(Configuration)' == 'TeamCity'">..\assemblies\OpenCvSharp.MachineLearning.dll</HintPath>
</Reference>

您可以通过右键单击解决方案资源管理器 -> 配置管理器中的解决方案文件来在 Visual Studio 中添加新的构建配置...然后单击活动解决方案配置的下拉列表并选择<New...>

添加新的 TeamCity 构建配置

不过,缺点是您必须编辑 .csproj 文件以包含上述条件。

于 2013-08-21T14:44:53.313 回答