git - $(NugetPackageRoot) 宏在 VS2019 中自动更改为 *.sfpro

我在 Visual Studio 中遇到 *.sfproj 问题,因为 *.sfproj 文件不断被 check out 并不断显示源代码管理 (git) 中有更改。只有打开 *.sproj 作为解决方案的一部分修改文件,我只能在关闭整个解决方案后撤消对该特定文件的更改,才能获得最新版本的项目。每次都这样做是令人沮丧的,特别是因为它可能会意外地 checkin 源代码管理。被修改的行是:

  • 在服务器上:
<Import Project="$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props" Condition="Exists('$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" />
<Import Project="$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets" Condition="Exists('$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" />
<Target Name="ValidateMSBuildFiles" BeforeTargets="PrepareForBuild">
   <Error Condition="!Exists('$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" Text="Unable to find the '$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
   <Error Condition="!Exists('$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" Text="Unable to find the '$(NugetPackageRoot)Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
</Target>
  • 本地:
<Import Project="..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props" Condition="Exists('..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" />
<Import Project="..\package*\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets" Condition="Exists('..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" />
<Target Name="ValidateMSBuildFiles" BeforeTargets="PrepareForBuild">
    <Error Condition="!Exists('..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" Text="Unable to find the '..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.props' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
    <Error Condition="!Exists('..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" Text="Unable to find the '..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.9\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
</Target>

我也在 *.sfproj 中定义了这个属性:

<PropertyGroup>
    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
</PropertyGroup>

基本上 $(NugetPackageRoot) 在 VS 解决方案加载时更改为 ..\packages\。对于如何避免发生这种更改,使项目文件不被源代码管理视为已修改,您有什么想法吗?

最佳答案

$(NugetPackageRoot) macro changes to “..\packages\…” in *.sfproj file automatically in VS2019, constantly requiring undo changes before push to Git Ask Question

建议

请尝试创建一个名为 Directory.Build.props 的文件.

在您的项目文件夹中。

然后在其中添加这些:

   <Project>
    <PropertyGroup>
    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
   </PropertyGroup>
   </Project>

然后它将更改为使用您的新路径。

更新 1

你可以试试这个:

在解决方案文件夹下创建一个名为 Nuget.Config 的新文件(xxx.sln 存在)

然后在其中添加这些:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="%USERPROFILE%\.nuget\packages" />
</config>

</configuration>

那么你也应该将你的解决方案下的nuget.config push Source Control,然后再次测试它。

新的 Nuget.Config 文件会将 nuget pakage 设置为使用新的引用路径(我的函数适用于 packages.config,这是您使用的格式)。

关于git - $(NugetPackageRoot) 宏在 VS2019 中自动更改为 *.sfproj 文件中的 "..\packages\....",在推送到 Git 之前不断要求撤消更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62531958/

相关文章:

node.js - 与 Prisma 2 相关的多个过滤器

python - 如何防止vscode/ms-python清除测试结果?

amazon-web-services - 由于 Amplify 上的身份验证 token 过期较短

java - 如何在 Tycho 构建中设置 Java 编译器兼容性?

firebase - 使用 Firebase 通过 OAuth2 创建登录名时指定 UserId 格

ios - Safari 或 IOS 中视频的 aws-sdk getSignedUrl 不起作用

python - Pandas 的 Mypy/typeshed stub

ios - Moya+Alamofire POST 请求在应用程序之间切换或进入后台时超时

java - 如何获取 Azure blob 下载中的 blob 下载进度

postgresql - 无法使用 deno.js 连接到 postgres