目前,我有一个脚本可以修改旧式csproj文件中的nuget参考路径。(对于任何有兴趣的人,这是由于使用不同的解决方案构建的,这些解决方案破坏了NuGet的参考路径。我已将其报告给Microsoft,并且目前正在分类中)。
该脚本可以正常工作,并且可以满足我的需要,但是我认为这对于具有代码修复功能的Roslyn Analyzer来说是一个很好的选择。
我玩过各种分析器,并且能够编写一些可以修改项目中的代码的工具,但是编写一个可以在csproj文件本身上工作的工具非常困难。
我已经看过工作区(VisualStudioWorkspace和MSBuildWorkspace),但是在我看来,这些工作区将使您可以访问解决方案中的各个项目,但不能访问项目文件本身?
如果有人可以给我指向我应该寻找的位置/内容的指示,或者实际上是可能的,我将非常感激。
谢谢
我创建了一个 ItemTemplate 项目。我想将其安装到自定义文件夹中。当我手动将从项目构建的 zip 文件添加到 ItemTemplates 内我的命名文件夹时,效果很好。
我现在使用两个项目,原始的 ItemTemplate 项目和用于安装的 VSIX 项目。
我面临的问题是,当使用 VSIX 项目安装模板时,安装路径会在我的自定义文件夹中添加一个名为 CSharp 的额外文件夹。仅当我将 ItemTemplate 项目作为项目添加到 VSIX 项目时,才会发生这种情况。如果我将 ItemTemplates 项目的输出(zip 文件)添加到 VSIX 项目,则模板位于正确的位置。
已使用 vsixmanifest.xml 中的资产部分将 ItemTemplate 项目添加为 VSIX 项目中的参考项目。下图中的属性是 VSIX 项目的引用部分中 ItemTemplate 项目的属性。

如果有帮助的话,这是我在 ItemTemplate 项目中使用的 vstemplate 文件。
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
<TemplateData>
<Name>Generator</Name>
<Description></Description>
<Icon>Magic.Generator.ico</Icon>
<TemplateID>Magic.Generator</TemplateID>
<TemplateGroupID>Magic</TemplateGroupID>
<ProjectType>CSharp</ProjectType>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
<NumberOfParentCategoriesToRollUp>2</NumberOfParentCategoriesToRollUp>
<DefaultName>Generator.cs</DefaultName>
</TemplateData>
<TemplateContent>
<ProjectItem ReplaceParameters="false">Generator.cs</ProjectItem>
</TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)
我正在使用 VS2017 (15.7.4) 如有任何帮助,我们将不胜感激,谢谢。
我的服务器上有一个文件夹,用于托管我的 nuget 包。这些包不包含源代码或符号 (PDB)。这很好用。
最近,我在本地服务器上设置了另一个文件夹来托管 nuget 包中程序集的符号文件。
我已将符号文件夹的路径添加到 Visual Studio,当我将 PDB 文件放在文件夹中时,它们会在 VS 中正确加载,并且我可以在调试时进入代码。如果我查看 VS 中的符号加载信息,我可以看到 PDB 是从我服务器上的符号文件夹下载的,确认一切正常。
我相信做这种事情的首选方法是让 nuget 在创建 nuget 包的同时创建一个符号包,我想转向这种工作方式。
创建符号和 nuget 包不是问题。问题是,当我(使用 nuget)将符号包推送到我的符号文件夹时,VS 无法使用它。当我尝试进入我的 nuget 包时,VS 尝试找到 PDB,我可以看到它在我的符号文件夹中查找,但找不到 PDB,这是有道理的,因为它包含在 nuget 符号包中。
谁能解释我缺少什么?
我想做的是使用powershell来解析文件并用值替换文件中的某些关键字.这是有效的,但我在使用捕获的正则表达式组格式化日期时间时出现问题.文件im解析包含以下文本:
$ DATETIME $
$ DATETIME = yyyy-MM-ddTHH:mm:sszzz $
$ DATETIME = yyyy $
我有一个powershell脚本,它提取关键字DATETIME并捕获提供的格式.每当我尝试使用捕获的格式时,它都会失败,因为(我怀疑)捕获的字符串变量$ 1用作格式字符串而不是$ 1的值.
Get-Content $inputfile) `
-replace '\$DATETIME[=]?(.*)\$', $(Get-Date -Format '$1') `
| Set-Content $outputfile
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我,我会很感激.
谢谢