添加现有项目问题?
Add Existing Item issue?
我创建了一个我喜欢用于多个项目的错误表单,而不是创建一个新表单。错误表单是在项目 A 中创建的。当然,错误表单用于捕获异常。
现在我正在创建项目 B。正如我提到的,我宁愿重复使用项目 A 中的错误表单。
所以我是这样做的: 我点击了项目 -> 添加现有项目,然后我浏览了项目 A 的错误表单的相关文件(ErrorForm.cs,ErrorForm.Designer.cs,和 ErrorForm.resx)。我希望在项目 B 中看到所有的错误表格。错误表格有一个带有图片集的 PictureBox。
不幸的是,实际发生了什么:再一次,我希望在项目B中使用项目A的错误表单。然后当我打开设计器时,我得到了这个错误:
“在全局命名空间中找不到名称或命名空间名称“ProjectA””。它在 ErrorForm.Designer 文件的这一行中:
this.pictureBox1.Image = global::ProjectA.Properties.Resources._2021_04_27_182907;
我注释掉了那句冒犯性的话。因为这没什么大不了的,因为我以后总是可以 select 从设计师 window 那里得到相同的图像。但是,ErrorForm里面一片空白,就像是新创建的一样!
为什么 ErrorForm 是空白的,我该如何解决这个问题?
不要将 A 中的单个表单添加到 B 中。该表单使用了 A 中的资源,如果您这样做,您不会引入这些资源。您应该将整个项目作为一个项目添加到解决方案中。这就像 Ahmed 在评论中提到的,添加一个 dll 并引用它,除了它在编译之前提前一步添加项目。这意味着您可以在解决方案中调整项目的代码,而不是切换到另一个 VS,更新代码,重新编译它,引用更新的 dll ...如果您将一些依赖项目引入解决方案,VS 会为您完成所有这些工作;它将编译dll项目A作为项目B的依赖
- 右键单击解决方案并选择添加现有项目。
- 在文件选择器中选择项目 A 中的 csproj,将整个项目 A 放入解决方案中。
- 将项目 A 的输出类型(在项目 A 属性中)更改为 Class 库。
- 在项目 B 中,添加对项目 A 的引用,右键单击“引用”,选择“添加”,在出现的面板中选择“项目”并勾选“项目 A”
您现在可以在任何项目 B 类 中执行 using ProjectA
(我假设错误形式仅在该名称空间中,而不是更深的名称空间中;它是,相应地调整 - 如果您将 margin/next 中的灯泡指向任何红色波浪线,vs 将帮助您)然后您将能够创建一个 new ErrorForm
我创建了一个我喜欢用于多个项目的错误表单,而不是创建一个新表单。错误表单是在项目 A 中创建的。当然,错误表单用于捕获异常。
现在我正在创建项目 B。正如我提到的,我宁愿重复使用项目 A 中的错误表单。
所以我是这样做的: 我点击了项目 -> 添加现有项目,然后我浏览了项目 A 的错误表单的相关文件(ErrorForm.cs,ErrorForm.Designer.cs,和 ErrorForm.resx)。我希望在项目 B 中看到所有的错误表格。错误表格有一个带有图片集的 PictureBox。
不幸的是,实际发生了什么:再一次,我希望在项目B中使用项目A的错误表单。然后当我打开设计器时,我得到了这个错误:
“在全局命名空间中找不到名称或命名空间名称“ProjectA””。它在 ErrorForm.Designer 文件的这一行中:
this.pictureBox1.Image = global::ProjectA.Properties.Resources._2021_04_27_182907;
我注释掉了那句冒犯性的话。因为这没什么大不了的,因为我以后总是可以 select 从设计师 window 那里得到相同的图像。但是,ErrorForm里面一片空白,就像是新创建的一样!
为什么 ErrorForm 是空白的,我该如何解决这个问题?
不要将 A 中的单个表单添加到 B 中。该表单使用了 A 中的资源,如果您这样做,您不会引入这些资源。您应该将整个项目作为一个项目添加到解决方案中。这就像 Ahmed 在评论中提到的,添加一个 dll 并引用它,除了它在编译之前提前一步添加项目。这意味着您可以在解决方案中调整项目的代码,而不是切换到另一个 VS,更新代码,重新编译它,引用更新的 dll ...如果您将一些依赖项目引入解决方案,VS 会为您完成所有这些工作;它将编译dll项目A作为项目B的依赖
- 右键单击解决方案并选择添加现有项目。
- 在文件选择器中选择项目 A 中的 csproj,将整个项目 A 放入解决方案中。
- 将项目 A 的输出类型(在项目 A 属性中)更改为 Class 库。
- 在项目 B 中,添加对项目 A 的引用,右键单击“引用”,选择“添加”,在出现的面板中选择“项目”并勾选“项目 A”
您现在可以在任何项目 B 类 中执行 using ProjectA
(我假设错误形式仅在该名称空间中,而不是更深的名称空间中;它是,相应地调整 - 如果您将 margin/next 中的灯泡指向任何红色波浪线,vs 将帮助您)然后您将能够创建一个 new ErrorForm