我有一个大的vstudio解决方案
.csproj
我要移植到新的.net sdk格式的文件。我已经整合了
github
项目与
AppVeyor
. 当我研究解决方案时,我的项目是由vstudio构建的;
追随者
使用msbuild生成我的项目。
解决方案中的所有类库项目文件都已修改,以便指定
<TargetFrameworks>netStandard2.0</TargetFrameworks>
. 为了简单起见,让我们用
classlib.csproj
.
该解决方案还包含一些命令行工具,这些工具需要在其他一些项目之前构建,因为后面的项目需要在构建它们自己之前将命令行工具作为预处理器运行。这些命令行项目都指定了
<TargetFrameworks>net472;netcoreapp2.0</TargetFrameworks>
. 让我们用
tool.csproj
.
为了正确构建,
CSPROJ
需要在之前建造
类库.csproj
. 在解决方案中,我使用了
Build dependencies > Project dependencies
命令在vstudio解决方案资源管理器中指明这一点。当我在vstudio内部工作时,这个工作很好。
但是,当我将更改推到
github
,
追随者
开球
msbuild
创建项目的过程。从这个错误中,很明显
小精灵
没有及时建成。似乎
MSBube
不了解
.sln
文件。
阅读Intertubes上发布的内容(例如
https://devblogs.microsoft.com/visualstudio/incorrect-solution-build-ordering-when-using-msbuild-exe/
,我试图将以下内容添加到
类库.csproj
:
<ProjectReference Include="..\tool\tool.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
但是当我这样做的时候我得到了错误:
Project '..\tool\tool.csproj' targets 'net472;netcoreapp2.0'. It cannot be referenced by a project that targets '.NETStandard,Version=v2.0'
这显然是有道理的。
我读过的其他一些解决方案建议编辑
SLN
文件以便
小精灵
先建成,希望能在
类库.csproj
开始建造。然而,这是一个种族状况,因为
MSBube
不知道依赖关系。
那么,我该如何表达
类库.csproj
取决于
CSPROJ
以便
MSBube
明白吗?
编辑
结果发现问题是由我为启动工具而编写的目标与msbuild为解决
<Compile>
使用类似于
**\*.cs
. 工具生成了文件
之后
全球定位操作。由于全局搜索发生时生成的文件不存在,因此
<编译& GT;
项集合,生成失败。我错误地将错误“foo.cs not found”解释为未能执行该工具,而事实上,这是一个时间问题。