MVC 脚手架污染 .csproj 文件
当我在包管理器控制台中运行自定义 Scaffold 命令时,它会更新默认项目的 .csproj 文件,并添加对解决方案中所有其他项目中所有其他文件的引用!
还有其他人看过这个吗?
有解决方法可以避免它吗?
.ps1 文件中唯一可以实际执行任何操作的行如下所示:
Invoke-ScaffoldTemplate -Template $templateFile -Model @{ Name = $MyParam } -OutputPath $outputPath -Force:$Force
编辑 PS1 文件(在主项目中)中的脚本手动将输出文件的路径定位到其他项目中:
$outputPath = "..\OtherProject\TargetFolder\" + $EntityName
在“Invoke-ScaffoldTemplate”命令中,我专门删除了对项目的引用,希望这就是问题所在。
When I run a custom Scaffold command in the Package Manager Console, it updates the default project's .csproj file and adds in references to all the other files in all the other projects in the solution!
Has anyone else seen this?
Is there a fix to avoid it?
The only lines in the .ps1 file that may actually do anything look like this:
Invoke-ScaffoldTemplate -Template $templateFile -Model @{ Name = $MyParam } -OutputPath $outputPath -Force:$Force
Edit
The script in the PS1 file (in the main project) manually targets the paths of the output files to be in other projects:
$outputPath = "..\OtherProject\TargetFolder\" + $EntityName
In the "Invoke-ScaffoldTemplate" command, I specifically removed the reference to the Project, hoping this was the problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编辑:根据您添加的附加信息进行更新。感谢您的澄清。
使用“..\OtherProject\Filename”等上层路径并不是将文件添加到其他项目的方法 - 这会产生您所看到的奇怪效果。如果将此类路径提供给 Invoke-ScaffoldTemplate,我将考虑添加一个检查以引发异常。
将文件添加到其他项目的正确方法是将合适的 -Project 参数传递给 Invoke-ScaffoldTemplate。然后,输出将添加到该项目,并且路径将被解释为相对于该项目。
例如,
Edit: Updated based on the additional info you added. Thanks for clarifying.
Using up-level paths like "..\OtherProject\Filename" is not the way to add files to other projects - this creates the bizarre effect you witnessed. I'll consider adding a check to throw an exception if such paths are given to Invoke-ScaffoldTemplate.
The correct way to add files to other projects is simply to pass a suitable -Project parameter to Invoke-ScaffoldTemplate. Then, the output will be added to that project, and the path will be interpreted as relative to that project.
For example,