是否可以在同一文件夹中的净完整和净标准项目之间共享`directory.build.props”



i在文件夹中创建了.NET 4.0项目组件,并在同一文件夹中创建了.NET标准项目文件(共享相同的.cs文件)。它可以完美地工作,直到我添加Directory.Build.props文件为止,此时我仅在.NET 4.0项目上获得此错误:

您的项目不用引用" .netFramework,版本= V4.0" 框架。添加对" .netFramework,版本= v4.0"的引用 项目文件的" TargetFrameWorks"属性,然后重新运行Nuget 还原。

我只尝试了一个文件元素:

<?xml version="1.0" encoding="utf-8"?>
<Project>
</Project>

alse也

<Project Condition='$(MSBuildProjectName.Contains("-Standard"))'>

我有相同的错误。

我已经知道一种解决方案是创建一个共享项目并以这种方式包含文件或添加链接文件,但是我想看看我是否只能在同一文件夹中的.NET标准项目使用Directory.Build.props来更改某些NET仅标准配置。如果没有

Directory.Build.props的净标准项目原因是因为我无法使用.csproj文件更改输出目录而没有错误。

显然这确实有效。我关闭了Visual Studio,删除了所有objbin文件夹,包括父目录中的.vs文件夹,然后重新启动Visual Studio。我将其添加到Directory.Build.props文件中,因此仅在名称中使用-Standard的净标准项目运行:

<?xml version="1.0" encoding="utf-8"?>
<Project>
  <PropertyGroup Condition='$(MSBuildProjectName.Contains("-Standard"))'>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)obj_std</BaseIntermediateOutputPath>
  </PropertyGroup>
</Project>

注意:如果使用此信息,则必须将-Standard更改为您添加到.NET标准项目中的任何后缀,或者以其他方式解决新条件。

我发现失败的原因是因为这个文件:

objproject.assets.json

当.net核心在同一目录中构建时,它将创建。在更改obj目录名称之前,它一定已经留在那里。

经过更多的研究,我发现了这一点,其中帖子似乎做了我刚刚做过的同样的事情(在找到下面的页面之前,我自己想出了这一点):https://github.com/nuget/home/issues/5126#issuecomment-297457667

最新更新