- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我曾尝试搜索以前提出的问题,但很难筛选出它们,因为似乎 99% 都是引用问题在构建之后,而我的问题是引用问题清洁后。
问题如下,我正在恢复一个旧项目 - 不幸的是我以前从未参与过 - 并且在我构建解决方案时一切都可以编译并正常工作。
不过,当我执行一个 Clean Solution 时,我得到了一个项目的引用错误。所讨论的项目是一个 Visual Basic Web 服务项目。它有对其他两个项目(C#)的引用,当我查看“项目属性”时,在“引用” Pane 中我看到用于引用的路径是 SolutionFolder\Project\bin\Debug\Projectname.dll。
因此,每当我清理我的解决方案时,bin\Debug 就会被清空并且引用丢失。这是否意味着引用设置错误?
我从研究项目引用对 VB 项目的不同工作方式的问题中了解到,但我发现 C# 和 VB 项目的组合会在您清理解决方案时给出引用错误,这很奇怪。
谁能帮我/解释为什么会这样?
好的,我已经创建了重现问题的步骤。它的工作原理如下:
Visual Studio -> 新建项目 -> Visual Basic WCF 服务应用程序
解决方案 -> 添加 -> 新建项目 -> C# 类库
在类库中添加如下函数
namespace ClassLibrary1
{
public class Class1
{
public static int Foo()
{
return 1;
}
}
}
Visual Basic WCF 项目 -> 添加 -> 引用 -> C# ClassLibrary(来自解决方案项目)
构建解决方案
在服务中,我按如下方式更改 GetData 函数:
Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData
Dim foo = ClassLibrary1.Class1.Foo
Return String.Format("You entered: {0}", value)
End Function
构建解决方案
现在清理解决方案。
Visual Studio 现在告诉我存在引用错误。
再次构建。
错误消失了。
最佳答案
作为Maarten声明添加项目引用 或添加文件引用 之间存在重要区别。我想更详细地解释它 - 原始学分归于 Maarten!
有几种不同的方法可以将引用添加到程序集。有关详细信息,您可以查看 MSDN 文章 How to: Add or Remove References By Using the Reference Manager .
按照运算符(operator)的要求,我们专注于文件和项目引用。我将展示 VS 如何保存引用设置以及它们对您的项目有何影响!在我的示例中,我制作了一个包含三个项目(a、b 和 c)的解决方案。 项目 C 是指 A 和 B。
正如我们所见,文件引用静态引用您硬盘上的文件。如果所引用的文件不可用,您将收到损坏的引用警告。因此,当您清理解决方案时,任何已构建的程序集都将被清理。出于这个原因,您确实会收到警告。
引用项目会保存目标的项目 GUID。因此,在构建当前项目时,VS 将查找目标项目并构建它们 - 如有必要。
这就是 MSDN 声明的原因:
You should avoid adding file references to outputs of another project in the same solution, because this tactic may cause compilation errors. Instead, use the Solution tab of the Reference Manager dialog box to create project-to-project references. This tactic makes team development easier by enabling better management of the class libraries that you create in your projects. For more information, see Troubleshooting Broken References.
编辑
由于您的项目包含不同的语言 VS 无法解析您的项目引用。你可能会看看这个 similar SO question在一个解决方案中处理两种语言。显然,虽然它是一个项目引用,但 VS 将其处理为文件引用。
在 Visual Studio 中有 several language services这是语言特定的。因此,如果您从一个 C# 程序集引用另一个 C# 程序集,相应的语言服务将处理项目引用创建时的任何潜在引用错误。
但如果您从 C# 引用 VB.net 程序集(或相反)没有“跨”语言服务。一个很简单的例子就是相关的<summary> tags
来自 c# 程序集的代码不会出现在 VB.net 项目中(如链接的问题/评论所述)。
关于c# - Clean Solution 导致引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26402832/
假设我想在编译项目之前将项目本地依赖项(jar 文件)安装到本地 Maven 存储库 (~/.m2),这样我就可以在 POM 中引用它们,就像引用 Maven 中的任何依赖项一样中央。目前,我正在使用
我需要使用 Clean 编程语言列出目录中的所有文件,但我不知道这样做的任何函数。有人可以帮助我吗? 最佳答案 您可以使用 Directory module 中的函数 getDirectoryCont
我的应用程序工作正常,我能够使用 jar 执行 mvn clean install并能够执行 jar 文件,但我将其更改为 war 文件,但我无法执行 mvn clean install . 这些之间
我是 Maven 的初学者。当我点击 clean & Build 在 netbeans 中重建我的项目时,它抛出一个错误 Failed to execute goal org.apache.maven
我已经为我的一些模型覆盖了 clean() 方法来构造约束以满足我的数据库架构要求(因为它需要运行时信息来进行这些验证)。 从现在开始,我已经完成了大部分后端组件(模型、信号、..),现在我正在尝试编
从 Android Studio 项目的终端发出以下语句有什么区别: Android_Studio_Project_Path: ./gradlew clean Android_Studio_Proje
我曾在不同的团队工作过,在一个团队中,人们倾向于在合并旧分支后立即清理它们。在其他团队分支永远停留。删除/保留旧分支有什么好处?这是否取决于我们使用的源代码控制系统? (在我的情况下 - SVN)。
我有一个相当复杂的(iPhone SDK)Xcode 项目,有很多目标——4 个静态库、单元测试、多个示例应用程序、一个运行 shell 脚本的 BuildAll 以及一个运行另一个 shell 脚本
我有一个 cucumber 项目,当您单独运行 cucumberrunner 文件时,该项目运行良好 [运行方式 -->Junit 测试]。 当我尝试使用 maven 命令运行相同的文件时,它失败了:
我在 cruiseControl 中有一个 msbuild 任务,它首先清除然后重建。如果我将其更改为“清理并构建”(而不是重建),会有什么不同吗? Rebuild 为每个项目执行“清理 + 构建”。
我对 Clean Architecture 中的 Gateway to Entity 依赖有疑问。我认为以下同心圆图形经常被介绍为整洁的架构。 在上图中,Gateway并没有直视Entity。但是,还
我使用M2e + Eclipse + Maven,我想知道两者之间的区别: 在终端和中运行“mvn clean” 从Eclipse 运行“干净的项目”吗? 有人可以请教吗? 最佳答案 通过一些快速测试
我试图弄清楚 package.json 脚本部分中“clean:dist”或“clean:js”与“clean”的作用?我在网上搜索并查看了NPM documentation但找不到任何线索。那么有人
我在 Linux 上的构建过程有一个小问题。 无论出于何种原因,在我的代码中,如果我发出“make clean”命令,Linux 会生成一个名为“clean”的文件。问题是我的项目的 makefile
mvn clean package和mvn clean install到底有什么区别?当我运行这两个命令时,它们似乎都在做同样的事情。 最佳答案 好吧,两者都会清理。这意味着他们将删除目标文件夹。真正
您在每个应用程序的开发过程中都遇到了某个时刻,您在模拟器中看到的内容与您认为应该发生的情况不符。这些大多是人为错误——或者至少在大多数我的案例中是这样的;-)——但有时 Xcode 只是“迷失了方向”
我使用这两个命令来解决我项目中的依赖问题。 mvn -U clean compile解决的问题。但我不知道它们之间的区别。请解释这些命令之间的区别以及我何时使用 mvn clean compile和
我正在为我的项目使用 Maven。如果我的项目不使用某些本地资源,这不是问题。 以便我遵循本指南 https://stackoverflow.com/a/61576687/6720896 将我的本地
我正在尝试创建一个 Grunt 任务来清理目录中的所有文件、子目录及其文件等。 我可以删除所有文件,但文件夹始终保留。 clean: { preview: ["live_previe
我有以下情况: 我有一个包含几个子项目的项目。今天我尝试通过命令行使用 gradle 构建项目。 执行 ./gradlew clean :build 时构建成功, 但不是 ./gradlew clea
我是一名优秀的程序员,十分优秀!