【问题标题】:New class (added on branch) not included in DLL新类(添加到分支上)不包含在 DLL 中
【发布时间】:2013-11-19 10:07:10
【问题描述】:

我有一个类库,其中包含一个名为 TestService 的类。我使用 Visual Studio 的“添加 -> 类”菜单添加了它。在csproj文件中,看起来不错

<ItemGroup>
    ...
    <Compile Include="Implementation\TestService.cs" />
    ...
</ItemGroup>

我在任何地方都找不到任何“排除”语句,而且它在 Visual Studio 中构建得很好。但是,在 MS Build 操作期间(在 TeamCity 上),当我使用 dotPeek 查看生成的 DLL 时,我的类不存在(并且我的构建失败)。

该类已添加到分支上,并在构建期间合并到主干中。合并的 .csproj 文件看起来不错。

我已尝试使用默认命名空间(由 VS2010 选择,与文件夹结构匹配),即“TimetablingPhase2.Service.Implementation”。同一文件夹中的所有其他类都有命名空间“TimetablingPhase2.Service,我也尝试过(另一位开发人员最初编写了此代码)。

谁能说明为什么它没有包含在我的 DLL 中?下面是添加的类的截图。

谢谢

【问题讨论】:

  • 99% 的情况下,当我遇到这种情况时,我会说你看错了地方。
  • 是的,不知道还能去哪里看看。我检查了所有解决方案文件、csproj 文件、删除了类、重新添加了它、删除了所有 TeamCity 缓存等、更改了命名空间作为健全性检查等。不知道现在该去哪里!
  • 奇怪,我刚刚在同一个命名空间中添加了一个新类(Test.cs),现在它也在构建其他类......
  • 你检查过 ActivityLogService.cs 的命名空间吗? @理查德
  • 嗨@Rezoan,它的命名空间与同一文件夹中的所有其他类一致。我想知道这是否与构建操作和/或构建配置有关,但我还看不到任何明显的东西

标签: c# visual-studio-2010 msbuild teamcity


【解决方案1】:

简单修复:我交换了构建任务的顺序。而不是顺序是:

1) 清洁。 2) 合并。 3) 编译。

我现在这样做:

1) 合并。 2) 清洁。 3) 编译。

很高兴对此进行纠正,但我认为这是原因:

  1. 第一次编译时,要编译的类列表被加载到 MSBuild 执行构建目标(清洁)。
  2. 然后我合并了代码,这改变了要编译的类列表(添加了额外的类)。
  3. 但是因为该列表已经加载,我的新课程 (到那时 已 在 csproj 文件中列出)从未被选中 向上。
  4. 首先执行合并确保列表是最新的 MSBuild 会读取它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多