【发布时间】:2021-05-07 04:33:01
【问题描述】:
我将 Visual Studio 2019 用于 .NET Core 3.1 MVC 应用程序。我已经安装了几个我也创建的 Nuget 包。一些包包含它们自己的设置文件,需要将其复制到输出目录才能使应用程序正常工作。这些设置文件被放入他们自己的文件夹中,一切都很好。这些包之一的示例 .csproj 文件:
<PropertyGroup>
<TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>[redacted</Authors>
<Company>[redacted</Company>
<Description>[redacted]</Description>
<Version>1.0.2.2-alpha</Version>
</PropertyGroup>
<ItemGroup>
<None Remove="settings\mySettings.Development.json" />
<None Remove="settings\mySettings.Production.json" />
<None Remove="settings\mySettings.Staging.json" />
</ItemGroup>
<ItemGroup>
<Content Include="settings\mySettings.Development.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>true</Pack>
</Content>
<Content Include="settings\mySettings.Production.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>true</Pack>
</Content>
<Content Include="settings\mySettings.Staging.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>true</Pack>
</Content>
</ItemGroup>
奇怪的是,当我更新其中一个包时,有时 Visual Studio 不会链接到更新包中的设置文件。例如,这是我用于 Web 应用程序的 .csproj 文件。
<Content Update="..\..\..\..\..\.nuget\packages\mypackage\1.0.2.2-alpha\contentFiles\any\netstandard2.0\settings\mySettings.Development.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="..\..\..\..\..\.nuget\packages\mypackage\1.0.2.2-alpha\contentFiles\any\netstandard2.0\settings\mySettings.Production.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="..\..\..\..\..\.nuget\packages\mypackage\1.0.2.2-alpha\contentFiles\any\netstandard2.0\settings\mySettings.Staging.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
这部分看起来不错,即使我必须手动将路径从绝对更改为相对。
但是在解决方案资源管理器中,当我查看这些文件的属性时,它会将构建操作显示为None,并且路径是指向较旧的包版本。如果我随后将构建操作更改为Copy always,VS 将添加将旧文件复制到 .csproj 的说明。
这可能是一个问题,如果另一个开发人员接管了这个项目,他们可能不会注意到版本差异,如果他们更改构建操作,他们可能会用旧的设置文件覆盖正确的设置文件。
我在 .csproj 文件中没有看到对旧版本的任何引用,那么它来自哪里?请注意,旧版本的软件包也没有安装在解决方案的任何地方。有谁知道交易是什么?
谢谢。
【问题讨论】:
标签: visual-studio asp.net-core nuget visual-studio-2019